Skip to content
This repository was archived by the owner on Nov 8, 2022. It is now read-only.

Commit eab6a60

Browse files
committed
refactor: move user default c11n settings to schema
1 parent 3bd5457 commit eab6a60

File tree

3 files changed

+20
-16
lines changed

3 files changed

+20
-16
lines changed

lib/groupher_server/accounts/customization.ex

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,18 @@ defmodule GroupherServer.Accounts.Customization do
22
@moduledoc false
33

44
alias __MODULE__
5-
65
use Ecto.Schema
6+
7+
import Helper.Utils, only: [get_config: 2]
78
import Ecto.Changeset
9+
810
alias GroupherServer.Accounts.User
911

1012
@required_fields ~w(user_id)a
1113
@optional_fields ~w(theme sidebar_layout sidebar_communities_index community_chart brainwash_free banner_layout contents_layout content_divider content_hover mark_viewed display_density)a
1214

15+
@default_customization get_config(:customization, :all)
16+
1317
@type t :: %Customization{}
1418
schema "customizations" do
1519
belongs_to(:user, User)
@@ -38,4 +42,6 @@ defmodule GroupherServer.Accounts.Customization do
3842
|> validate_required(@required_fields)
3943
|> foreign_key_constraint(:user_id)
4044
end
45+
46+
def default, do: @default_customization |> Enum.into(%{})
4147
end

lib/groupher_server/accounts/delegates/customization.ex

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,14 @@ defmodule GroupherServer.Accounts.Delegate.Customization do
33
customization for user
44
"""
55
import Ecto.Query, warn: false
6-
import Helper.Utils, only: [get_config: 2, map_atom_value: 2]
6+
import Helper.Utils, only: [map_atom_value: 2]
77
import ShortMaps
88

9-
alias Helper.ORM
109
alias GroupherServer.Accounts
10+
alias Helper.ORM
1111

12-
alias Accounts.{User, Customization}
13-
alias Accounts.Delegate.Achievements
14-
15-
@default_customization get_config(:customization, :all) |> Enum.into(%{})
12+
alias Accounts.{Customization, Delegate, User}
13+
alias Delegate.Achievements
1614

1715
def upgrade_by_plan(%User{} = user, :donate) do
1816
Achievements.set_member(user, :donate)
@@ -37,10 +35,10 @@ defmodule GroupherServer.Accounts.Delegate.Customization do
3735
case ORM.find_by(Customization, user_id: user_id) do
3836
{:ok, customization} ->
3937
customization = customization |> Map.from_struct() |> filter_nil_value
40-
{:ok, Map.merge(@default_customization, customization)}
38+
{:ok, Map.merge(Customization.default(), customization)}
4139

4240
{:error, _} ->
43-
{:ok, @default_customization}
41+
{:ok, Customization.default()}
4442
end
4543
end
4644

@@ -96,12 +94,12 @@ defmodule GroupherServer.Accounts.Delegate.Customization do
9694
end
9795
end
9896

99-
defp extract_cur_c11n(nil), do: @default_customization
97+
defp extract_cur_c11n(nil), do: Customization.default()
10098

10199
defp extract_cur_c11n(%Customization{} = customization) do
102100
customization = customization |> Map.from_struct() |> filter_nil_value
103101

104-
Map.merge(@default_customization, customization)
102+
Map.merge(Customization.default(), customization)
105103
end
106104

107105
# defp c11n_item_setable?(:theme, %{

test/groupher_server_web/query/accounts/customization_test.exs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
defmodule GroupherServer.Test.Query.Account.Customization do
22
use GroupherServer.TestTools
3-
import Helper.Utils, only: [get_config: 2]
43

5-
@default_customization get_config(:customization, :all) |> Enum.into(%{})
4+
alias GroupherServer.Accounts.Customization
65

76
setup do
87
{:ok, user} = db_insert(:user)
@@ -35,13 +34,14 @@ defmodule GroupherServer.Test.Query.Account.Customization do
3534
results = user_conn |> query_result(@query, %{}, "user")
3635

3736
assert results["id"] == to_string(user.id)
38-
assert results["customization"]["theme"] == @default_customization |> Map.get(:theme)
37+
assert results["customization"]["theme"] == Customization.default() |> Map.get(:theme)
3938

4039
assert results["customization"]["bannerLayout"] ==
41-
@default_customization |> Map.get(:banner_layout)
40+
Customization.default()
41+
|> Map.get(:banner_layout)
4242

4343
assert results["customization"]["contentsLayout"] ==
44-
@default_customization |> Map.get(:contents_layout)
44+
Customization.default() |> Map.get(:contents_layout)
4545
end
4646
end
4747
end

0 commit comments

Comments
 (0)