From 58cfbc24afbaf4d78c9a946bb0cae594fe670c1c Mon Sep 17 00:00:00 2001 From: AndyXheli Date: Sat, 20 Sep 2025 16:25:58 +0200 Subject: [PATCH 1/4] "Refactor Side Menu JsController to Use IAvatarManager via Dependency Injection for Nextcloud 32 Com MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🔧 Problem: The Side Menu app was calling OC\Server::getAvatarManager(), which no longer exists in Nextcloud 32. ✅ Fix: Injected IAvatarManager using Nextcloud’s public API instead of accessing it via OC::$server. Updated the constructor to accept IAvatarManager, IUserSession, INavigationManager, and IURLGenerator. Replaced all direct calls to OC::$server->getAvatarManager() and similar with the injected services. This makes the app compatible with Nextcloud 32 and avoids deprecated internal method calls. Signed-off-by: AndyXheli --- lib/Controller/JsController.php | 35 +++++++++++++++------------------ 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/lib/Controller/JsController.php b/lib/Controller/JsController.php index a8be206..dbe94fb 100644 --- a/lib/Controller/JsController.php +++ b/lib/Controller/JsController.php @@ -20,7 +20,6 @@ namespace OCA\SideMenu\Controller; use OC\User\User; -use OCA\SideMenu\AppInfo\Application; use OCA\SideMenu\Service\ConfigProxy; use OCA\Theming\ThemingDefaults; use OCP\AppFramework\Controller; @@ -29,10 +28,12 @@ use OCP\AppFramework\Http\Attribute\NoAdminRequired; use OCP\AppFramework\Http\Attribute\NoCSRFRequired; use OCP\AppFramework\Http\Attribute\PublicPage; use OCP\AppFramework\Http\JSONResponse; -use OCP\AppFramework\Http\TemplateResponse; use OCP\IRequest; use OCP\IUserSession; use OCP\L10N\IFactory; +use OCP\IAvatarManager; +use OCP\INavigationManager; +use OCP\IURLGenerator; class JsController extends Controller { @@ -44,14 +45,13 @@ class JsController extends Controller protected ConfigProxy $config, protected ThemingDefaults $themingDefaults, protected IFactory $l10nFactory, + protected IAvatarManager $avatarManager, + protected IUserSession $userSession, + protected INavigationManager $navigationManager, + protected IURLGenerator $urlGenerator, ) { parent::__construct($appName, $request); - - $this->themingDefaults = $themingDefaults; - - $this->user = \OC::$server[IUserSession::class]->getUser(); - $this->config = $config; - $this->l10nFactory = $l10nFactory; + $this->user = $this->userSession->getUser(); } #[NoCSRFRequired] @@ -99,25 +99,25 @@ class JsController extends Controller $targetBlankApps = $userTargetBlankApps; } - $isAvatarSet = \OC::$server->getAvatarManager()->getAvatar($this->user->getUid())->exists(); + $isAvatarSet = $this->avatarManager->getAvatar($this->user->getUID())->exists(); if ($useAvatar && $isAvatarSet) { - $avatar = \OC::$server->getURLGenerator()->linkToRoute('core.avatar.getAvatar', [ - 'userId' => $this->user->getUid(), + $avatar = $this->urlGenerator->linkToRoute('core.avatar.getAvatar', [ + 'userId' => $this->user->getUID(), 'size' => 128, 'v' => $this->config->getUserValueInt($this->user, 'avatar', 'version', 0), ]); } if ($this->config->getAppValueBool('show-settings', '0')) { - $settingsNav = \OC::$server->getNavigationManager()->getAll('settings'); + $settingsNav = $this->navigationManager->getAll('settings'); if (isset($settingsNav['settings'])) { $settings = [ 'href' => $settingsNav['settings']['href'], 'name' => $settingsNav['settings']['name'], - 'avatar' => \OC::$server->getURLGenerator()->linkToRoute('core.avatar.getAvatar', [ - 'userId' => $this->user->getUid(), + 'avatar' => $this->urlGenerator->linkToRoute('core.avatar.getAvatar', [ + 'userId' => $this->user->getUID(), 'size' => 32, 'v' => $this->config->getUserValueInt($this->user, 'avatar', 'version', 0), ]), @@ -126,7 +126,7 @@ class JsController extends Controller } } - $indexUrl = \OC::$server->getURLGenerator()->linkTo('', 'index.php'); + $indexUrl = $this->urlGenerator->linkTo('', 'index.php'); return [ 'opener-position' => $this->config->getAppValue('opener-position', 'before'), @@ -145,10 +145,7 @@ class JsController extends Controller 'avatar' => $avatar, 'top-menu-apps' => $topMenuApps, 'top-side-menu-apps' => $topSideMenuApps, - 'top-menu-mouse-over-hidden-label' => $this->config->getAppValueInt( - 'top-menu-mouse-over-hidden-label', - '0' - ), + 'top-menu-mouse-over-hidden-label' => $this->config->getAppValueInt('top-menu-mouse-over-hidden-label', '0'), 'target-blank-apps' => $targetBlankApps, 'settings' => $settings, 'logo' => $this->themingDefaults->getLogo(), From 8bd89b45653d6443ffe748ef3b78a07cde0ae056 Mon Sep 17 00:00:00 2001 From: AndyXheli Date: Sat, 20 Sep 2025 16:41:49 +0200 Subject: [PATCH 2/4] Update lib/Controller/JsController.php --- lib/Controller/JsController.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/Controller/JsController.php b/lib/Controller/JsController.php index dbe94fb..710d6a9 100644 --- a/lib/Controller/JsController.php +++ b/lib/Controller/JsController.php @@ -145,7 +145,11 @@ class JsController extends Controller 'avatar' => $avatar, 'top-menu-apps' => $topMenuApps, 'top-side-menu-apps' => $topSideMenuApps, - 'top-menu-mouse-over-hidden-label' => $this->config->getAppValueInt('top-menu-mouse-over-hidden-label', '0'), + 'top-menu-mouse-over-hidden-label' => $this->config->getAppValueInt( + + 'top-menu-mouse-over-hidden-label', + '0' + ), 'target-blank-apps' => $targetBlankApps, 'settings' => $settings, 'logo' => $this->themingDefaults->getLogo(), From acde24ea711db9fac64f9b0f84bf0a69bc894242 Mon Sep 17 00:00:00 2001 From: AndyXheli Date: Sat, 20 Sep 2025 16:42:52 +0200 Subject: [PATCH 3/4] Update lib/Controller/JsController.php --- lib/Controller/JsController.php | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/Controller/JsController.php b/lib/Controller/JsController.php index 710d6a9..5b85859 100644 --- a/lib/Controller/JsController.php +++ b/lib/Controller/JsController.php @@ -146,7 +146,6 @@ class JsController extends Controller 'top-menu-apps' => $topMenuApps, 'top-side-menu-apps' => $topSideMenuApps, 'top-menu-mouse-over-hidden-label' => $this->config->getAppValueInt( - 'top-menu-mouse-over-hidden-label', '0' ), From 9ad73c7bf7b57f93b91377d003b9f87ee66d8a52 Mon Sep 17 00:00:00 2001 From: AndyXheli Date: Sat, 20 Sep 2025 16:43:41 +0200 Subject: [PATCH 4/4] Update lib/Controller/JsController.php Signed-off-by: AndyXheli --- lib/Controller/JsController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Controller/JsController.php b/lib/Controller/JsController.php index 5b85859..302de3d 100644 --- a/lib/Controller/JsController.php +++ b/lib/Controller/JsController.php @@ -146,7 +146,7 @@ class JsController extends Controller 'top-menu-apps' => $topMenuApps, 'top-side-menu-apps' => $topSideMenuApps, 'top-menu-mouse-over-hidden-label' => $this->config->getAppValueInt( - 'top-menu-mouse-over-hidden-label', + 'top-menu-mouse-over-hidden-label', '0' ), 'target-blank-apps' => $targetBlankApps,