forked from
jollywhoppers.com/witchsky.app
Bluesky app fork with some witchin' additions 馃挮
1{% extends "base.html" %}
2
3{% block head_title %}
4{%- if profileView -%}
5 @{{ profileView.Handle }} on Bluesky
6{%- else -%}
7 Bluesky
8{%- endif -%}
9{% endblock %}
10
11{% block html_head_extra -%}
12 <meta property="og:site_name" content="Bluesky Social">
13 <meta property="og:type" content="profile">
14{%- if requestURI %}
15 <meta property="og:url" content="{{ requestURI }}">
16 <link rel="canonical" href="{{ requestURI|canonicalize_url }}" />
17{% endif -%}
18
19{%- if profileView -%}
20 <meta property="profile:username" content="{{ profileView.Handle }}">
21 {%- if profileView.DisplayName %}
22 <meta property="og:title" content="{{ profileView.DisplayName }} (@{{ profileView.Handle }})">
23 {% else %}
24 <meta property="og:title" content="{{ profileView.Handle }}">
25 {% endif -%}
26
27 <link rel="alternate" href="at://{{ profileView.Did }}/app.bsky.actor.profile/self" />
28
29 <meta name="twitter:label1" content="Account DID">
30 <meta name="twitter:value1" content="{{ profileView.Did }}">
31
32 {%- if requestHost %}
33 <link rel="alternate" type="application/rss+xml" href="https://{{ requestHost }}/profile/{{ profileView.Did }}/rss">
34 {% endif %}
35
36 {# Only show details if auth isn't required #}
37 {% if not requiresAuth %}
38 {%- if profileView.Description %}
39 <meta name="description" content="{{ profileView.Description }}">
40 <meta property="og:description" content="{{ profileView.Description }}">
41 {% endif -%}
42 {%- if profileView.Banner %}
43 <meta property="og:image" content="{{ profileView.Banner }}">
44 <meta name="twitter:card" content="summary_large_image">
45 {%- elif profileView.Avatar -%}
46 {# Don't use avatar image in cards; usually looks bad #}
47 <meta name="twitter:card" content="summary">
48 {% endif %}
49 {% else %}
50 <meta name="description" content="This profile requires authentication to view.">
51 <meta property="og:description" content="This profile requires authentication to view.">
52 <meta property="twitter:description" content="This profile requires authentication to view.">
53 {% endif %}
54
55 <script type="application/ld+json">
56 {
57 "@context": "https://schema.org",
58 "@type": "ProfilePage",
59 "dateCreated": "{{ profileView.CreatedAt }}",
60 "mainEntity": {
61 "@type": "Person",
62 {%- if profileView.DisplayName %}
63 "name": "{{ profileView.DisplayName }}",
64 "alternateName": "@{{ profileView.Handle }}",
65 {% else %}
66 "name": "@{{ profileView.Handle }}",
67 {% endif -%}
68 "identifier": "{{ profileView.Did }}",
69 "description": "{{ profileView.Description }}",
70 "image": "{{ profileView.Avatar }}",
71 "interactionStatistic": [
72 {
73 "@type": "InteractionCounter",
74 "interactionType": "https://schema.org/FollowAction",
75 "userInteractionCount": {{ profileView.FollowersCount }}
76 }
77 ],
78 "agentInteractionStatistic": [
79 {
80 "@type": "InteractionCounter",
81 "interactionType": "https://schema.org/FollowAction",
82 "userInteractionCount": {{ profileView.FollowsCount }}
83 },
84 {
85 "@type": "InteractionCounter",
86 "interactionType": "https://schema.org/WriteAction",
87 "userInteractionCount": {{ profileView.PostsCount }}
88 }
89 ]
90 }
91 }
92 </script>
93{% endif -%}
94{%- endblock %}
95
96{% block noscript_extra -%}
97{%- if profileView -%}
98<div id="bsky_profile_summary">
99 <h3>Profile</h3>
100 <p id="bsky_display_name">{{ profileView.DisplayName }}</p>
101 <p id="bsky_handle">{{ profileView.Handle }}</p>
102 <p id="bsky_did">{{ profileView.Did }}</p>
103 <p id="bsky_profile_description">{{ profileView.Description }}</p>
104</div>
105{% endif -%}
106{%- endblock %}