Bluesky app fork with some witchin' additions 馃挮 witchsky.app
bluesky fork client
144
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 106 lines 3.7 kB view raw
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 %}