defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
alias Pleroma.Activity
- alias Pleroma.Mailer
+ alias Pleroma.Emails.Mailer
+ alias Pleroma.Emails.UserEmail
alias Pleroma.Repo
alias Pleroma.User
- alias Pleroma.UserEmail
alias Pleroma.UserInviteToken
alias Pleroma.Web.ActivityPub.ActivityPub
alias Pleroma.Web.CommonAPI
end
def register_user(params) do
- token_string = params["token"]
+ token = params["token"]
params = %{
nickname: params["nickname"],
{:error, %{error: Jason.encode!(%{captcha: [error]})}}
else
registrations_open = Pleroma.Config.get([:instance, :registrations_open])
- registration_process(registrations_open, params, token_string)
+ registration_process(registrations_open, params, token)
end
end
- defp registration_process(_registration_open = true, params, _token_string) do
- create_user(params)
- end
-
- defp registration_process(registration_open, params, token_string)
+ defp registration_process(registration_open, params, token)
when registration_open == false or is_nil(registration_open) do
- token =
- unless is_nil(token_string) do
- Repo.get_by(UserInviteToken, %{token: token_string})
+ invite =
+ unless is_nil(token) do
+ Repo.get_by(UserInviteToken, %{token: token})
end
- valid_token? = token && UserInviteToken.valid_token?(token)
+ valid_invite? = invite && UserInviteToken.valid_invite?(invite)
- case token do
+ case invite do
nil ->
{:error, "Invalid token"}
- token when valid_token? ->
- UserInviteToken.update_usage(token)
+ invite when valid_invite? ->
+ UserInviteToken.update_usage!(invite)
create_user(params)
_ ->
end
end
+ defp registration_process(true, params, _token) do
+ create_user(params)
+ end
+
defp create_user(params) do
changeset = User.register_changeset(%User{}, params)
defp parse_int(_, default), do: default
+ # TODO: unify the search query with MastoAPI one and do only pagination here
def search(_user, %{"q" => query} = params) do
limit = parse_int(params["rpp"], 20)
page = parse_int(params["page"], 1)
q =
from(
- a in Activity,
+ [a, o] in Activity.with_preloaded_object(Activity),
where: fragment("?->>'type' = 'Create'", a.data),
where: "https://www.w3.org/ns/activitystreams#Public" in a.recipients,
where:
fragment(
- "to_tsvector('english', ?->'object'->>'content') @@ plainto_tsquery('english', ?)",
- a.data,
+ "to_tsvector('english', ?->>'content') @@ plainto_tsquery('english', ?)",
+ o.data,
^query
),
limit: ^limit,