user: remote actors can have no nickname if they are virtual services
[akkoma] / lib / pleroma / web / activity_pub / activity_pub.ex
index ec605b694f49557b0f7dcfb472618ae98d324439..bab272323f47e749c9b098800e775432c7f541f5 100644 (file)
@@ -554,12 +554,19 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
         "locked" => locked
       },
       avatar: avatar,
-      nickname: "#{data["preferredUsername"]}@#{URI.parse(data["id"]).host}",
       name: data["name"],
       follower_address: data["followers"],
       bio: data["summary"]
     }
 
+    # nickname can be nil because of virtual actors
+    user_data =
+      if data["preferredUsername"] do
+        Map.put(user_data, :nickname, "#{data["preferredUsername"]}@#{URI.parse(data["id"]).host}")
+      else
+        Map.put(user_data, :nickname, nil)
+      end
+
     {:ok, user_data}
   end