Compare commits

...
Sign in to create a new pull request.

4 commits

Author SHA1 Message Date
9ad73c7bf7 Update lib/Controller/JsController.php
Signed-off-by: AndyXheli <andyxheli@gmail.com>
2025-09-20 16:43:41 +02:00
acde24ea71 Update lib/Controller/JsController.php 2025-09-20 16:42:52 +02:00
8bd89b4565 Update lib/Controller/JsController.php 2025-09-20 16:41:49 +02:00
58cfbc24af "Refactor Side Menu JsController to Use IAvatarManager via Dependency Injection for Nextcloud 32 Com
🔧 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 <andyxheli@gmail.com>
2025-09-20 16:25:58 +02:00

View file

@ -20,7 +20,6 @@
namespace OCA\SideMenu\Controller; namespace OCA\SideMenu\Controller;
use OC\User\User; use OC\User\User;
use OCA\SideMenu\AppInfo\Application;
use OCA\SideMenu\Service\ConfigProxy; use OCA\SideMenu\Service\ConfigProxy;
use OCA\Theming\ThemingDefaults; use OCA\Theming\ThemingDefaults;
use OCP\AppFramework\Controller; 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\NoCSRFRequired;
use OCP\AppFramework\Http\Attribute\PublicPage; use OCP\AppFramework\Http\Attribute\PublicPage;
use OCP\AppFramework\Http\JSONResponse; use OCP\AppFramework\Http\JSONResponse;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\IRequest; use OCP\IRequest;
use OCP\IUserSession; use OCP\IUserSession;
use OCP\L10N\IFactory; use OCP\L10N\IFactory;
use OCP\IAvatarManager;
use OCP\INavigationManager;
use OCP\IURLGenerator;
class JsController extends Controller class JsController extends Controller
{ {
@ -44,14 +45,13 @@ class JsController extends Controller
protected ConfigProxy $config, protected ConfigProxy $config,
protected ThemingDefaults $themingDefaults, protected ThemingDefaults $themingDefaults,
protected IFactory $l10nFactory, protected IFactory $l10nFactory,
protected IAvatarManager $avatarManager,
protected IUserSession $userSession,
protected INavigationManager $navigationManager,
protected IURLGenerator $urlGenerator,
) { ) {
parent::__construct($appName, $request); parent::__construct($appName, $request);
$this->user = $this->userSession->getUser();
$this->themingDefaults = $themingDefaults;
$this->user = \OC::$server[IUserSession::class]->getUser();
$this->config = $config;
$this->l10nFactory = $l10nFactory;
} }
#[NoCSRFRequired] #[NoCSRFRequired]
@ -99,25 +99,25 @@ class JsController extends Controller
$targetBlankApps = $userTargetBlankApps; $targetBlankApps = $userTargetBlankApps;
} }
$isAvatarSet = \OC::$server->getAvatarManager()->getAvatar($this->user->getUid())->exists(); $isAvatarSet = $this->avatarManager->getAvatar($this->user->getUID())->exists();
if ($useAvatar && $isAvatarSet) { if ($useAvatar && $isAvatarSet) {
$avatar = \OC::$server->getURLGenerator()->linkToRoute('core.avatar.getAvatar', [ $avatar = $this->urlGenerator->linkToRoute('core.avatar.getAvatar', [
'userId' => $this->user->getUid(), 'userId' => $this->user->getUID(),
'size' => 128, 'size' => 128,
'v' => $this->config->getUserValueInt($this->user, 'avatar', 'version', 0), 'v' => $this->config->getUserValueInt($this->user, 'avatar', 'version', 0),
]); ]);
} }
if ($this->config->getAppValueBool('show-settings', '0')) { if ($this->config->getAppValueBool('show-settings', '0')) {
$settingsNav = \OC::$server->getNavigationManager()->getAll('settings'); $settingsNav = $this->navigationManager->getAll('settings');
if (isset($settingsNav['settings'])) { if (isset($settingsNav['settings'])) {
$settings = [ $settings = [
'href' => $settingsNav['settings']['href'], 'href' => $settingsNav['settings']['href'],
'name' => $settingsNav['settings']['name'], 'name' => $settingsNav['settings']['name'],
'avatar' => \OC::$server->getURLGenerator()->linkToRoute('core.avatar.getAvatar', [ 'avatar' => $this->urlGenerator->linkToRoute('core.avatar.getAvatar', [
'userId' => $this->user->getUid(), 'userId' => $this->user->getUID(),
'size' => 32, 'size' => 32,
'v' => $this->config->getUserValueInt($this->user, 'avatar', 'version', 0), '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 [ return [
'opener-position' => $this->config->getAppValue('opener-position', 'before'), 'opener-position' => $this->config->getAppValue('opener-position', 'before'),