aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorprovokateurin <kate@provokateurin.de>2024-08-27 13:11:30 +0200
committerprovokateurin <kate@provokateurin.de>2024-09-09 11:04:36 +0200
commit0a3093d05da92036684afb5814a4925b443468f7 (patch)
tree89f89e40346d98efc37ecededc55c571e4ec35db
parent669641142b35407ae8b6cce1cda95fdb77747ac9 (diff)
downloadnextcloud-server-0a3093d05da92036684afb5814a4925b443468f7.tar.gz
nextcloud-server-0a3093d05da92036684afb5814a4925b443468f7.zip
fix(theming): Use NavigationManager to handle default entries
Signed-off-by: provokateurin <kate@provokateurin.de>
-rw-r--r--apps/theming/lib/Controller/ThemingController.php10
-rw-r--r--apps/theming/lib/Settings/Personal.php10
-rw-r--r--apps/theming/src/components/UserAppMenuSection.vue2
-rw-r--r--apps/theming/tests/Controller/ThemingControllerTest.php5
-rw-r--r--apps/theming/tests/Settings/PersonalTest.php15
5 files changed, 26 insertions, 16 deletions
diff --git a/apps/theming/lib/Controller/ThemingController.php b/apps/theming/lib/Controller/ThemingController.php
index 73ef78c7a8e..ce7a4eca8f3 100644
--- a/apps/theming/lib/Controller/ThemingController.php
+++ b/apps/theming/lib/Controller/ThemingController.php
@@ -26,6 +26,7 @@ use OCP\Files\NotFoundException;
use OCP\Files\NotPermittedException;
use OCP\IConfig;
use OCP\IL10N;
+use OCP\INavigationManager;
use OCP\IRequest;
use OCP\IURLGenerator;
use ScssPhp\ScssPhp\Compiler;
@@ -47,6 +48,7 @@ class ThemingController extends Controller {
private IAppManager $appManager;
private ImageManager $imageManager;
private ThemesService $themesService;
+ private INavigationManager $navigationManager;
public function __construct(
$appName,
@@ -57,7 +59,8 @@ class ThemingController extends Controller {
IURLGenerator $urlGenerator,
IAppManager $appManager,
ImageManager $imageManager,
- ThemesService $themesService
+ ThemesService $themesService,
+ INavigationManager $navigationManager,
) {
parent::__construct($appName, $request);
@@ -68,6 +71,7 @@ class ThemingController extends Controller {
$this->appManager = $appManager;
$this->imageManager = $imageManager;
$this->themesService = $themesService;
+ $this->navigationManager = $navigationManager;
}
/**
@@ -163,7 +167,7 @@ class ThemingController extends Controller {
case 'defaultApps':
if (is_array($value)) {
try {
- $this->appManager->setDefaultApps($value);
+ $this->navigationManager->setDefaultEntryIds($value);
} catch (InvalidArgumentException $e) {
$error = $this->l10n->t('Invalid app given');
}
@@ -310,7 +314,7 @@ class ThemingController extends Controller {
#[AuthorizedAdminSetting(settings: Admin::class)]
public function undoAll(): DataResponse {
$this->themingDefaults->undoAll();
- $this->appManager->setDefaultApps([]);
+ $this->navigationManager->setDefaultEntryIds([]);
return new DataResponse(
[
diff --git a/apps/theming/lib/Settings/Personal.php b/apps/theming/lib/Settings/Personal.php
index 3dc64141dc3..9f78f2cbc35 100644
--- a/apps/theming/lib/Settings/Personal.php
+++ b/apps/theming/lib/Settings/Personal.php
@@ -9,10 +9,10 @@ use OCA\Theming\ITheme;
use OCA\Theming\Service\BackgroundService;
use OCA\Theming\Service\ThemesService;
use OCA\Theming\ThemingDefaults;
-use OCP\App\IAppManager;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\AppFramework\Services\IInitialState;
use OCP\IConfig;
+use OCP\INavigationManager;
use OCP\Settings\ISettings;
use OCP\Util;
@@ -25,7 +25,7 @@ class Personal implements ISettings {
private ThemesService $themesService,
private IInitialState $initialStateService,
private ThemingDefaults $themingDefaults,
- private IAppManager $appManager,
+ private INavigationManager $navigationManager,
) {
}
@@ -49,8 +49,8 @@ class Personal implements ISettings {
});
}
- // Get the default app enforced by admin
- $forcedDefaultApp = $this->appManager->getDefaultAppForUser(null, false);
+ // Get the default entry enforced by admin
+ $forcedDefaultEntry = $this->navigationManager->getDefaultEntryIdForUser(null, false);
/** List of all shipped backgrounds */
$this->initialStateService->provideInitialState('shippedBackgrounds', BackgroundService::SHIPPED_BACKGROUNDS);
@@ -78,7 +78,7 @@ class Personal implements ISettings {
$this->initialStateService->provideInitialState('enableBlurFilter', $this->config->getUserValue($this->userId, 'theming', 'force_enable_blur_filter', ''));
$this->initialStateService->provideInitialState('navigationBar', [
'userAppOrder' => json_decode($this->config->getUserValue($this->userId, 'core', 'apporder', '[]'), true, flags:JSON_THROW_ON_ERROR),
- 'enforcedDefaultApp' => $forcedDefaultApp
+ 'enforcedDefaultApp' => $forcedDefaultEntry
]);
Util::addScript($this->appName, 'personal-theming');
diff --git a/apps/theming/src/components/UserAppMenuSection.vue b/apps/theming/src/components/UserAppMenuSection.vue
index 56abd357274..6459c245824 100644
--- a/apps/theming/src/components/UserAppMenuSection.vue
+++ b/apps/theming/src/components/UserAppMenuSection.vue
@@ -81,7 +81,7 @@ export default defineComponent({
*/
const initialAppOrder = loadState<INavigationEntry[]>('core', 'apps')
.filter(({ type }) => type === 'link')
- .map((app) => ({ ...app, label: app.name, default: app.default && app.app === enforcedDefaultApp }))
+ .map((app) => ({ ...app, label: app.name, default: app.default && app.id === enforcedDefaultApp }))
/**
* Check if a custom app order is used or the default is shown
diff --git a/apps/theming/tests/Controller/ThemingControllerTest.php b/apps/theming/tests/Controller/ThemingControllerTest.php
index 86231e7daf7..fd520231e63 100644
--- a/apps/theming/tests/Controller/ThemingControllerTest.php
+++ b/apps/theming/tests/Controller/ThemingControllerTest.php
@@ -18,6 +18,7 @@ use OCP\Files\NotFoundException;
use OCP\Files\SimpleFS\ISimpleFile;
use OCP\IConfig;
use OCP\IL10N;
+use OCP\INavigationManager;
use OCP\IRequest;
use OCP\IURLGenerator;
use PHPUnit\Framework\MockObject\MockObject;
@@ -42,6 +43,8 @@ class ThemingControllerTest extends TestCase {
private $urlGenerator;
/** @var ThemesService|MockObject */
private $themesService;
+ /** @var INavigationManager|MockObject */
+ private $navigationManager;
protected function setUp(): void {
$this->request = $this->createMock(IRequest::class);
@@ -52,6 +55,7 @@ class ThemingControllerTest extends TestCase {
$this->urlGenerator = $this->createMock(IURLGenerator::class);
$this->imageManager = $this->createMock(ImageManager::class);
$this->themesService = $this->createMock(ThemesService::class);
+ $this->navigationManager = $this->createMock(INavigationManager::class);
$timeFactory = $this->createMock(ITimeFactory::class);
$timeFactory->expects($this->any())
@@ -70,6 +74,7 @@ class ThemingControllerTest extends TestCase {
$this->appManager,
$this->imageManager,
$this->themesService,
+ $this->navigationManager,
);
parent::setUp();
diff --git a/apps/theming/tests/Settings/PersonalTest.php b/apps/theming/tests/Settings/PersonalTest.php
index 2313b3062a0..88c5e93d1c7 100644
--- a/apps/theming/tests/Settings/PersonalTest.php
+++ b/apps/theming/tests/Settings/PersonalTest.php
@@ -24,6 +24,7 @@ use OCP\AppFramework\Http\TemplateResponse;
use OCP\AppFramework\Services\IInitialState;
use OCP\IConfig;
use OCP\IL10N;
+use OCP\INavigationManager;
use OCP\IURLGenerator;
use OCP\IUserSession;
use PHPUnit\Framework\MockObject\MockObject;
@@ -34,7 +35,7 @@ class PersonalTest extends TestCase {
private ThemesService&MockObject $themesService;
private IInitialState&MockObject $initialStateService;
private ThemingDefaults&MockObject $themingDefaults;
- private IAppManager&MockObject $appManager;
+ private INavigationManager&MockObject $navigationManager;
private Personal $admin;
/** @var ITheme[] */
@@ -46,7 +47,7 @@ class PersonalTest extends TestCase {
$this->themesService = $this->createMock(ThemesService::class);
$this->initialStateService = $this->createMock(IInitialState::class);
$this->themingDefaults = $this->createMock(ThemingDefaults::class);
- $this->appManager = $this->createMock(IAppManager::class);
+ $this->navigationManager = $this->createMock(INavigationManager::class);
$this->initThemes();
@@ -62,7 +63,7 @@ class PersonalTest extends TestCase {
$this->themesService,
$this->initialStateService,
$this->themingDefaults,
- $this->appManager,
+ $this->navigationManager,
);
}
@@ -103,9 +104,9 @@ class PersonalTest extends TestCase {
['admin', 'theming', 'background_image', BackgroundService::BACKGROUND_DEFAULT],
]);
- $this->appManager->expects($this->once())
- ->method('getDefaultAppForUser')
- ->willReturn('forcedapp');
+ $this->navigationManager->expects($this->once())
+ ->method('getDefaultEntryIdForUser')
+ ->willReturn('forced_id');
$this->initialStateService->expects($this->exactly(8))
->method('provideInitialState')
@@ -117,7 +118,7 @@ class PersonalTest extends TestCase {
['themes', $themesState],
['enforceTheme', $enforcedTheme],
['isUserThemingDisabled', false],
- ['navigationBar', ['userAppOrder' => [], 'enforcedDefaultApp' => 'forcedapp']],
+ ['navigationBar', ['userAppOrder' => [], 'enforcedDefaultApp' => 'forced_id']],
]);
$expected = new TemplateResponse('theming', 'settings-personal');