]> git.openstreetmap.org Git - rails.git/blob - app/views/api/users/_user.xml.builder
feat: add social links and company to user api endpoint
[rails.git] / app / views / api / users / _user.xml.builder
1 # frozen_string_literal: true
2
3 xml.tag! "user", :id => user.id,
4                  :display_name => user.display_name,
5                  :account_created => user.created_at.xmlschema do
6   xml.tag! "description", user.description if user.description
7   xml.tag! "company", user.company if user.company
8
9   xml.tag! "social-links" do
10     user.social_links.each do |link|
11       details = link.parsed
12       xml.tag! "link", details[:url], :platform => details[:platform]
13     end
14   end
15
16   if current_user && current_user == user && can?(:details, User)
17     xml.tag! "contributor-terms", :agreed => user.terms_agreed.present?,
18                                   :pd => user.consider_pd
19   else
20     xml.tag! "contributor-terms", :agreed => user.terms_agreed.present?
21   end
22   xml.tag! "img", :href => user_image_url(user) if user.avatar.attached? || user.image_use_gravatar
23   xml.tag! "roles" do
24     user.roles.each do |role|
25       xml.tag! role.role
26     end
27   end
28   xml.tag! "changesets", :count => user.changesets.size
29   xml.tag! "traces", :count => user.traces.size
30   xml.tag! "blocks" do
31     xml.tag! "received", :count => user.blocks.size,
32                          :active => user.blocks.active.size
33     if user.moderator?
34       xml.tag! "issued", :count => user.blocks_created.size,
35                          :active => user.blocks_created.active.size
36     end
37   end
38   if current_user && current_user == user && can?(:details, User)
39     if user.home_location?
40       xml.tag! "home", :lat => user.home_lat,
41                        :lon => user.home_lon,
42                        :zoom => user.home_zoom
43     end
44     if user.languages
45       xml.tag! "languages" do
46         user.languages.split(",") { |lang| xml.tag! "lang", lang }
47       end
48     end
49     xml.tag! "messages" do
50       xml.tag! "received", :count => user.messages.size,
51                            :unread => user.new_messages.size
52       xml.tag! "sent", :count => user.sent_messages.size
53     end
54     xml.tag! "email", user.email if scope_enabled?(:read_email)
55   end
56 end