aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorEgor Kislitsyn <egor@kislitsyn.com>2019-01-08 16:32:07 +0700
committerEgor Kislitsyn <egor@kislitsyn.com>2019-01-08 16:32:07 +0700
commit0c750bc432a6329be7f0dc15707e46625b11faf3 (patch)
tree36702360119a8bce2d2b41c84d32d0cdd1a48c0c /lib
parent6428ef77adef6aa3fca1fbcdcfffc5db5fc953d5 (diff)
parent4e5b1560479df7dd553a2132186f9701e1d56871 (diff)
downloadpleroma-0c750bc432a6329be7f0dc15707e46625b11faf3.tar.gz
Merge branch 'develop' of git.pleroma.social:pleroma/pleroma into feature/pinned-posts
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/user.ex9
-rw-r--r--lib/pleroma/web/twitter_api/views/activity_view.ex18
2 files changed, 26 insertions, 1 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex
index 0e5e2d943..85d0f9fce 100644
--- a/lib/pleroma/user.ex
+++ b/lib/pleroma/user.ex
@@ -367,6 +367,15 @@ defmodule Pleroma.User do
Repo.get_by(User, ap_id: ap_id)
end
+ # This is mostly an SPC migration fix. This guesses the user nickname (by taking the last part of the ap_id and the domain) and tries to get that user
+ def get_by_guessed_nickname(ap_id) do
+ domain = URI.parse(ap_id).host
+ name = List.last(String.split(ap_id, "/"))
+ nickname = "#{name}@#{domain}"
+
+ get_by_nickname(nickname)
+ end
+
def update_and_set_cache(changeset) do
with {:ok, user} <- Repo.update(changeset) do
Cachex.put(:user_cache, "ap_id:#{user.ap_id}", user)
diff --git a/lib/pleroma/web/twitter_api/views/activity_view.ex b/lib/pleroma/web/twitter_api/views/activity_view.ex
index ad0cc76ed..25e1486c1 100644
--- a/lib/pleroma/web/twitter_api/views/activity_view.ex
+++ b/lib/pleroma/web/twitter_api/views/activity_view.ex
@@ -94,11 +94,27 @@ defmodule Pleroma.Web.TwitterAPI.ActivityView do
ap_id == "https://www.w3.org/ns/activitystreams#Public" ->
nil
+ user = User.get_cached_by_ap_id(ap_id) ->
+ user
+
+ user = User.get_by_guessed_nickname(ap_id) ->
+ user
+
true ->
- User.get_cached_by_ap_id(ap_id)
+ error_user(ap_id)
end
end
+ defp error_user(ap_id) do
+ %User{
+ name: ap_id,
+ ap_id: ap_id,
+ info: %User.Info{},
+ nickname: "erroruser@example.com",
+ inserted_at: NaiveDateTime.utc_now()
+ }
+ end
+
def render("index.json", opts) do
context_ids = collect_context_ids(opts.activities)
users = collect_users(opts.activities)