From bd61752be2f574323b05d1d0aee0df55adf9a74e Mon Sep 17 00:00:00 2001
From: Yassine Doghri <yassine@doghri.fr>
Date: Mon, 10 Jan 2022 16:05:16 +0000
Subject: [PATCH] feat(meta-tags): add activitypub alternate links to podcast,
 episode, comment and post pages

---
 app/Helpers/seo_helper.php | 33 +++++++++++++++++++++++++++++----
 1 file changed, 29 insertions(+), 4 deletions(-)

diff --git a/app/Helpers/seo_helper.php b/app/Helpers/seo_helper.php
index 6c4d9e8325..253711c92a 100644
--- a/app/Helpers/seo_helper.php
+++ b/app/Helpers/seo_helper.php
@@ -44,7 +44,12 @@ if (! function_exists('get_podcast_metatags')) {
             ->og('image:width', (string) config('Images')->podcastCoverSizes['large']['width'])
             ->og('image:height', (string) config('Images')->podcastCoverSizes['large']['height'])
             ->og('locale', $podcast->language_code)
-            ->og('site_name', service('settings')->get('App.siteName'));
+            ->og('site_name', service('settings')->get('App.siteName'))
+            ->push('link', [
+                'rel' => 'alternate',
+                'type' => 'application/activity+json',
+                'href' => url_to('podcast-activity', $podcast->handle),
+            ]);
 
         if ($podcast->payment_pointer) {
             $metatags->meta('monetization', $podcast->payment_pointer);
@@ -94,7 +99,12 @@ if (! function_exists('get_episode_metatags')) {
             ->twitter('audio:artist_name', $episode->podcast->owner_name)
             ->twitter('player', $episode->getEmbedUrl('light'))
             ->twitter('player:width', (string) config('Embed')->width)
-            ->twitter('player:height', (string) config('Embed')->height);
+            ->twitter('player:height', (string) config('Embed')->height)
+            ->push('link', [
+                'rel' => 'alternate',
+                'type' => 'application/activity+json',
+                'href' => url_to('episode', $episode->podcast->handle, $episode->slug),
+            ]);
 
         if ($episode->podcast->payment_pointer) {
             $metatags->meta('monetization', $episode->podcast->payment_pointer);
@@ -149,7 +159,12 @@ if (! function_exists('get_post_metatags')) {
             ->description($post->message)
             ->image($post->actor->avatar_image_url)
             ->canonical((string) current_url())
-            ->og('site_name', service('settings')->get('App.siteName'));
+            ->og('site_name', service('settings')->get('App.siteName'))
+            ->push('link', [
+                'rel' => 'alternate',
+                'type' => 'application/activity+json',
+                'href' => url_to('post', $post->actor->username, $post->id),
+            ]);
 
         return $metatags->__toString() . PHP_EOL . $schema->__toString();
     }
@@ -183,7 +198,17 @@ if (! function_exists('get_episode_comment_metatags')) {
             ->description($episodeComment->message)
             ->image($episodeComment->actor->avatar_image_url)
             ->canonical((string) current_url())
-            ->og('site_name', service('settings')->get('App.siteName'));
+            ->og('site_name', service('settings')->get('App.siteName'))
+            ->push('link', [
+                'rel' => 'alternate',
+                'type' => 'application/activity+json',
+                'href' => url_to(
+                    'episode-comment',
+                    $episodeComment->actor->username,
+                    $episodeComment->episode->slug,
+                    $episodeComment->id
+                ),
+            ]);
 
         return $metatags->__toString() . PHP_EOL . $schema->__toString();
     }
-- 
GitLab