User: remove source_data use for follower_address and following_address

This commit is contained in:
Haelwenn (lanodan) Monnier 2020-04-01 01:50:53 +02:00
parent c433ed9dbb
commit 5628984df4
No known key found for this signature in database
GPG key ID: D5B7A8E43C997DEE

View file

@ -306,6 +306,7 @@ def banner_url(user, options \\ []) do
end end
end end
# Should probably be renamed or removed
def ap_id(%User{nickname: nickname}), do: "#{Web.base_url()}/users/#{nickname}" def ap_id(%User{nickname: nickname}), do: "#{Web.base_url()}/users/#{nickname}"
def ap_followers(%User{follower_address: fa}) when is_binary(fa), do: fa def ap_followers(%User{follower_address: fa}) when is_binary(fa), do: fa
@ -339,6 +340,13 @@ defp truncate_if_exists(params, key, max_length) do
end end
end end
defp fix_follower_address(%{follower_address: _, following_address: _} = params), do: params
defp fix_follower_address(%{nickname: nickname} = params),
do: Map.put(params, :follower_address, ap_followers(%User{nickname: nickname}))
defp fix_follower_address(params), do: params
def remote_user_creation(params) do def remote_user_creation(params) do
bio_limit = Pleroma.Config.get([:instance, :user_bio_length], 5000) bio_limit = Pleroma.Config.get([:instance, :user_bio_length], 5000)
name_limit = Pleroma.Config.get([:instance, :user_name_length], 100) name_limit = Pleroma.Config.get([:instance, :user_name_length], 100)
@ -348,53 +356,44 @@ def remote_user_creation(params) do
|> truncate_if_exists(:name, name_limit) |> truncate_if_exists(:name, name_limit)
|> truncate_if_exists(:bio, bio_limit) |> truncate_if_exists(:bio, bio_limit)
|> truncate_fields_param() |> truncate_fields_param()
|> fix_follower_address()
changeset = %User{local: false}
%User{local: false} |> cast(
|> cast( params,
params, [
[ :bio,
:bio, :name,
:name, :ap_id,
:ap_id, :nickname,
:nickname, :avatar,
:avatar, :ap_enabled,
:ap_enabled, :source_data,
:source_data, :banner,
:banner, :locked,
:locked, :magic_key,
:magic_key, :uri,
:uri, :follower_address,
:hide_followers, :following_address,
:hide_follows, :hide_followers,
:hide_followers_count, :hide_follows,
:hide_follows_count, :hide_followers_count,
:follower_count, :hide_follows_count,
:fields, :follower_count,
:following_count, :fields,
:discoverable, :following_count,
:invisible, :discoverable,
:actor_type, :invisible,
:also_known_as :actor_type,
] :also_known_as
) ]
|> validate_required([:name, :ap_id]) )
|> unique_constraint(:nickname) |> validate_required([:name, :ap_id])
|> validate_format(:nickname, @email_regex) |> unique_constraint(:nickname)
|> validate_length(:bio, max: bio_limit) |> validate_format(:nickname, @email_regex)
|> validate_length(:name, max: name_limit) |> validate_length(:bio, max: bio_limit)
|> validate_fields(true) |> validate_length(:name, max: name_limit)
|> validate_fields(true)
case params[:source_data] do
%{"followers" => followers, "following" => following} ->
changeset
|> put_change(:follower_address, followers)
|> put_change(:following_address, following)
_ ->
followers = ap_followers(%User{nickname: get_field(changeset, :nickname)})
put_change(changeset, :follower_address, followers)
end
end end
def update_changeset(struct, params \\ %{}) do def update_changeset(struct, params \\ %{}) do