From 90e44437bdf37d8024ef609b2f7336dbdfc3b974 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Tue, 15 Mar 2022 14:05:19 +0000 Subject: [PATCH] fix: remove cache from remote follow form to display error messages --- app/Controllers/ActorController.php | 22 ++++++------------- app/Language/en/Fediverse.php | 1 + app/Language/fr/Fediverse.php | 9 ++++---- app/Language/pl/Fediverse.php | 1 + .../Fediverse/Controllers/ActorController.php | 16 +++++++++----- themes/cp_app/_message_block.php | 19 ++++++++++++++++ 6 files changed, 44 insertions(+), 24 deletions(-) create mode 100644 themes/cp_app/_message_block.php 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')): ?> + + + +has('error')): ?> + + + +has('errors')): ?> + + + +