diff --git a/app/Controllers/ActorController.php b/app/Controllers/ActorController.php
index 5f97e469..9e2138e1 100644
--- a/app/Controllers/ActorController.php
+++ b/app/Controllers/ActorController.php
@@ -30,21 +30,13 @@ class ActorController extends FediverseActorController
$this->registerPodcastWebpageHit($this->actor->podcast->id);
}
- $cacheName = "page_podcast-{$this->actor->username}_follow";
- if (! ($cachedView = cache($cacheName))) {
- helper(['form', 'components', 'svg']);
- $data = [
- // @phpstan-ignore-next-line
- 'metatags' => get_follow_metatags($this->actor),
- 'actor' => $this->actor,
- ];
+ helper(['form', 'components', 'svg']);
+ $data = [
+ // @phpstan-ignore-next-line
+ 'metatags' => get_follow_metatags($this->actor),
+ 'actor' => $this->actor,
+ ];
- return view('podcast/follow', $data, [
- 'cache' => DECADE,
- 'cache_name' => $cacheName,
- ]);
- }
-
- return $cachedView;
+ return view('podcast/follow', $data);
}
}
diff --git a/app/Language/en/Fediverse.php b/app/Language/en/Fediverse.php
index d1faa771..32f54c07 100644
--- a/app/Language/en/Fediverse.php
+++ b/app/Language/en/Fediverse.php
@@ -16,6 +16,7 @@ return [
'title' => 'Follow {actorDisplayName}',
'subtitle' => 'You are going to follow:',
'accountNotFound' => 'The account could not be found.',
+ 'remoteFollowNotAllowed' => 'Seems like the account server does not allow remote follows…',
'submit' => 'Proceed to follow',
],
'favourite' => [
diff --git a/app/Language/fr/Fediverse.php b/app/Language/fr/Fediverse.php
index 0baa767c..7f22806e 100644
--- a/app/Language/fr/Fediverse.php
+++ b/app/Language/fr/Fediverse.php
@@ -15,23 +15,24 @@ return [
'follow' => [
'label' => 'Suivre',
'title' => 'Suivre {actorDisplayName}',
- 'subtitle' => 'Vous allez suivre :',
+ 'subtitle' => 'Vous allez suivre :',
'accountNotFound' => 'Le compte n’a pas pu être trouvé.',
+ 'remoteFollowNotAllowed' => 'Il semble que le serveur du compte ne permet pas le suivi d’un compte externe…',
'submit' => 'Poursuivre',
],
'favourite' => [
'title' => 'Mettez la publication de {actorDisplayName} en favori',
- 'subtitle' => 'Vous allez mettre en favori :',
+ 'subtitle' => 'Vous allez mettre en favori :',
'submit' => 'Poursuivre',
],
'reblog' => [
'title' => 'Partagez la publication de {actorDisplayName}',
- 'subtitle' => 'Vous allez partager :',
+ 'subtitle' => 'Vous allez partager :',
'submit' => 'Poursuivre',
],
'reply' => [
'title' => 'Répondre à la publication de {actorDisplayName}',
- 'subtitle' => 'Vous allez répondre à :',
+ 'subtitle' => 'Vous allez répondre à :',
'submit' => 'Poursuivre',
],
];
diff --git a/app/Language/pl/Fediverse.php b/app/Language/pl/Fediverse.php
index cf063da3..5c825e23 100644
--- a/app/Language/pl/Fediverse.php
+++ b/app/Language/pl/Fediverse.php
@@ -16,6 +16,7 @@ return [
'title' => 'Obserwuj {actorDisplayName}',
'subtitle' => 'Zamierzasz obserwować:',
'accountNotFound' => 'Nie można znaleźć konta.',
+ 'remoteFollowNotAllowed' => 'Seems like the account server does not allow remote follows…',
'submit' => 'Przejdź do obserwowania',
],
'favourite' => [
diff --git a/modules/Fediverse/Controllers/ActorController.php b/modules/Fediverse/Controllers/ActorController.php
index 7962a396..57692c3c 100644
--- a/modules/Fediverse/Controllers/ActorController.php
+++ b/modules/Fediverse/Controllers/ActorController.php
@@ -15,6 +15,7 @@ use CodeIgniter\Exceptions\PageNotFoundException;
use CodeIgniter\HTTP\RedirectResponse;
use CodeIgniter\HTTP\ResponseInterface;
use CodeIgniter\I18n\Time;
+use Exception;
use Modules\Fediverse\Config\Fediverse;
use Modules\Fediverse\Entities\Actor;
use Modules\Fediverse\Entities\Post;
@@ -353,10 +354,12 @@ class ActorController extends Controller
// parse actor id to get actor and domain
// check if actor and domain exist
- if (
- ! ($parts = split_handle($this->request->getPost('handle'))) ||
- ! ($data = get_webfinger_data($parts['username'], $parts['domain']))
- ) {
+ $handle = $this->request->getPost('handle');
+ $parts = split_handle($handle);
+
+ try {
+ $data = get_webfinger_data($parts['username'], $parts['domain']);
+ } catch (Exception) {
return redirect()
->back()
->withInput()
@@ -372,7 +375,10 @@ class ActorController extends Controller
if (! $ostatusKey) {
// TODO: error, couldn't subscribe to activitypub account
// The instance doesn't allow its users to follow others
- return $this->response->setJSON([]);
+ return redirect()
+ ->back()
+ ->withInput()
+ ->with('error', lang('Fediverse.follow.remoteFollowNotAllowed'));
}
return redirect()->to(
diff --git a/themes/cp_app/_message_block.php b/themes/cp_app/_message_block.php
new file mode 100644
index 00000000..1504aa37
--- /dev/null
+++ b/themes/cp_app/_message_block.php
@@ -0,0 +1,19 @@
+has('message')): ?>
+ = esc(session('message')) ?>
+
+
+has('error')): ?>
+ = esc(session('error')) ?>
+
+
+has('errors')): ?>
+
+
+
+