diff --git a/app/Controllers/ActorController.php b/app/Controllers/ActorController.php index 5f97e469b6ac6a4d72439e6af61d2cd62efc854d..9e2138e11712ad7d5e3ad2c8a62ad49171c5ebdc 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, - ]; - - return view('podcast/follow', $data, [ - 'cache' => DECADE, - 'cache_name' => $cacheName, - ]); - } + helper(['form', 'components', 'svg']); + $data = [ + // @phpstan-ignore-next-line + 'metatags' => get_follow_metatags($this->actor), + 'actor' => $this->actor, + ]; - return $cachedView; + return view('podcast/follow', $data); } } diff --git a/app/Language/en/Fediverse.php b/app/Language/en/Fediverse.php index d1faa771af5166e4b068acf5aef706b4dd0696de..32f54c074f81481a0f66b3947080dc44759a6964 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 0baa767c58bc82150ebf1755f19716e8203b21e5..7f22806ea54afc213c422e8abfbad13b19e51519 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 cf063da3407ba8cc2cb0d7a32ffd9487cb69b20c..5c825e2306ba72233af967cfdf45dc4b54bb180c 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 7962a3967683534450283265a6c433588e2673b6..57692c3c9220c64b273270a404fd8005228efdc7 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 0000000000000000000000000000000000000000..1504aa372c71b16280bc6967d34588142527f3e4 --- /dev/null +++ b/themes/cp_app/_message_block.php @@ -0,0 +1,19 @@ +<?php declare(strict_types=1); + +if (session()->has('message')): ?> + <Alert variant="success" class="mb-4"><?= esc(session('message')) ?></Alert> +<?php endif; ?> + +<?php if (session()->has('error')): ?> + <Alert variant="danger" class="mb-4"><?= esc(session('error')) ?></Alert> +<?php endif; ?> + +<?php if (session()->has('errors')): ?> + <Alert variant="danger" class="mb-4"> + <ul> + <?php foreach (session('errors') as $error): ?> + <li><?= esc($error) ?></li> + <?php endforeach; ?> + </ul> + </Alert> +<?php endif; ?>