From 405eb58a77b34ffe4408fe0708d5483cb02a39dd Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Tue, 11 Apr 2023 14:26:11 -0100 Subject: [PATCH] update account display name Signed-off-by: Maxence Lange --- lib/AppInfo/Application.php | 21 +++++++++- lib/Listeners/DeprecatedListener.php | 60 ++++++++++++++++++++++++++++ lib/Service/AccountService.php | 2 +- 3 files changed, 80 insertions(+), 3 deletions(-) create mode 100644 lib/Listeners/DeprecatedListener.php diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index 7ef42a73..0f3c0c6e 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -31,16 +31,19 @@ declare(strict_types=1); namespace OCA\Social\AppInfo; +use OCA\Social\Dashboard\SocialWidget; +use OCA\Social\Listeners\DeprecatedListener; +use OCA\Social\Listeners\ProfileSectionListener; use OCA\Social\Notification\Notifier; use OCA\Social\Search\UnifiedSearchProvider; use OCA\Social\WellKnown\WebfingerHandler; -use OCA\Social\Listeners\ProfileSectionListener; -use OCA\Social\Dashboard\SocialWidget; use OCP\AppFramework\App; use OCP\AppFramework\Bootstrap\IBootContext; use OCP\AppFramework\Bootstrap\IBootstrap; use OCP\AppFramework\Bootstrap\IRegistrationContext; +use OCP\IUser; use OCP\Profile\BeforeTemplateRenderedEvent; +use Symfony\Component\EventDispatcher\GenericEvent; require_once __DIR__ . '/../../vendor/autoload.php'; @@ -61,6 +64,8 @@ class Application extends App implements IBootstrap { $context->registerWellKnownHandler(WebfingerHandler::class); $context->registerEventListener(BeforeTemplateRenderedEvent::class, ProfileSectionListener::class); $context->registerDashboardWidget(SocialWidget::class); + + $this->registerDeprecatedListener(); } public function boot(IBootContext $context): void { @@ -68,4 +73,16 @@ class Application extends App implements IBootstrap { ->getNotificationManager(); $manager->registerNotifierService(Notifier::class); } + + + public function registerDeprecatedListener(): void { + $dispatcher = \OC::$server->getEventDispatcher(); + $dispatcher->addListener('OC\AccountManager::userUpdated', function (GenericEvent $event) { + /** @var IUser $user */ + $user = $event->getSubject(); + /** @var DeprecatedListener $deprecatedListener */ + $deprecatedListener = \OC::$server->get(DeprecatedListener::class); + $deprecatedListener->userAccountUpdated($user); + }); + } } diff --git a/lib/Listeners/DeprecatedListener.php b/lib/Listeners/DeprecatedListener.php new file mode 100644 index 00000000..435a276b --- /dev/null +++ b/lib/Listeners/DeprecatedListener.php @@ -0,0 +1,60 @@ + + * @copyright 2023, Maxence Lange + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +namespace OCA\Social\Listeners; + +use OCA\Social\Exceptions\ItemAlreadyExistsException; +use OCA\Social\Exceptions\SocialAppConfigException; +use OCA\Social\Exceptions\UrlCloudException; +use OCA\Social\Service\AccountService; +use OCP\IUser; + +class DeprecatedListener { + private AccountService $accountService; + + public function __construct( + AccountService $accountService + ) { + $this->accountService = $accountService; + } + + /** + * @param IUser $user + * + * @return void + * @throws SocialAppConfigException + * @throws UrlCloudException + */ + public function userAccountUpdated(IUser $user): void { + try { + $this->accountService->cacheLocalActorByUsername($user->getUID()); + } catch (ItemAlreadyExistsException $e) { + } + } +} diff --git a/lib/Service/AccountService.php b/lib/Service/AccountService.php index 19c4b384..a462962b 100644 --- a/lib/Service/AccountService.php +++ b/lib/Service/AccountService.php @@ -299,7 +299,7 @@ class AccountService { try { $iconId = $this->documentService->cacheLocalAvatarByUsername($actor); $actor->setIconId($iconId); - } catch (ItemUnknownException $e) { + } catch (ItemUnknownException | ItemAlreadyExistsException $e) { } $this->addLocalActorDetailCount($actor);