diff --git a/apps/files/composer/composer/autoload_classmap.php b/apps/files/composer/composer/autoload_classmap.php index 5922560f521c9..0d9e6aa2d77dd 100644 --- a/apps/files/composer/composer/autoload_classmap.php +++ b/apps/files/composer/composer/autoload_classmap.php @@ -16,6 +16,7 @@ 'OCA\\Files\\Activity\\Settings\\FileActivitySettings' => $baseDir . '/../lib/Activity/Settings/FileActivitySettings.php', 'OCA\\Files\\Activity\\Settings\\FileChanged' => $baseDir . '/../lib/Activity/Settings/FileChanged.php', 'OCA\\Files\\Activity\\Settings\\FileFavoriteChanged' => $baseDir . '/../lib/Activity/Settings/FileFavoriteChanged.php', + 'OCA\\Files\\AdvancedCapabilities' => $baseDir . '/../lib/AdvancedCapabilities.php', 'OCA\\Files\\App' => $baseDir . '/../lib/App.php', 'OCA\\Files\\AppInfo\\Application' => $baseDir . '/../lib/AppInfo/Application.php', 'OCA\\Files\\BackgroundJob\\CleanupDirectEditingTokens' => $baseDir . '/../lib/BackgroundJob/CleanupDirectEditingTokens.php', diff --git a/apps/files/composer/composer/autoload_static.php b/apps/files/composer/composer/autoload_static.php index bf489b037f762..5ece90731783b 100644 --- a/apps/files/composer/composer/autoload_static.php +++ b/apps/files/composer/composer/autoload_static.php @@ -31,6 +31,7 @@ class ComposerStaticInitFiles 'OCA\\Files\\Activity\\Settings\\FileActivitySettings' => __DIR__ . '/..' . '/../lib/Activity/Settings/FileActivitySettings.php', 'OCA\\Files\\Activity\\Settings\\FileChanged' => __DIR__ . '/..' . '/../lib/Activity/Settings/FileChanged.php', 'OCA\\Files\\Activity\\Settings\\FileFavoriteChanged' => __DIR__ . '/..' . '/../lib/Activity/Settings/FileFavoriteChanged.php', + 'OCA\\Files\\AdvancedCapabilities' => __DIR__ . '/..' . '/../lib/AdvancedCapabilities.php', 'OCA\\Files\\App' => __DIR__ . '/..' . '/../lib/App.php', 'OCA\\Files\\AppInfo\\Application' => __DIR__ . '/..' . '/../lib/AppInfo/Application.php', 'OCA\\Files\\BackgroundJob\\CleanupDirectEditingTokens' => __DIR__ . '/..' . '/../lib/BackgroundJob/CleanupDirectEditingTokens.php', diff --git a/apps/files/lib/AdvancedCapabilities.php b/apps/files/lib/AdvancedCapabilities.php new file mode 100644 index 0000000000000..22f990f0cf822 --- /dev/null +++ b/apps/files/lib/AdvancedCapabilities.php @@ -0,0 +1,38 @@ + [ + 'windows_compatible_filenames' => $this->service->hasFilesWindowsSupport(), + ], + ]; + } +} diff --git a/apps/files/lib/AppInfo/Application.php b/apps/files/lib/AppInfo/Application.php index 8d00912f7bba4..4b3948d43b5eb 100644 --- a/apps/files/lib/AppInfo/Application.php +++ b/apps/files/lib/AppInfo/Application.php @@ -9,6 +9,7 @@ namespace OCA\Files\AppInfo; use Closure; +use OCA\Files\AdvancedCapabilities; use OCA\Files\Capabilities; use OCA\Files\Collaboration\Resources\Listener; use OCA\Files\Collaboration\Resources\ResourceProvider; @@ -107,6 +108,7 @@ public function register(IRegistrationContext $context): void { * Register capabilities */ $context->registerCapability(Capabilities::class); + $context->registerCapability(AdvancedCapabilities::class); $context->registerCapability(DirectEditingCapabilities::class); $context->registerDeclarativeSettings(DeclarativeAdminSettings::class); diff --git a/apps/files/openapi.json b/apps/files/openapi.json index 5766b1cce13d4..fbb1bd17eeb9b 100644 --- a/apps/files/openapi.json +++ b/apps/files/openapi.json @@ -29,6 +29,7 @@ "files": { "type": "object", "required": [ + "windows_compatible_filenames", "$comment", "bigfilechunking", "blacklisted_files", @@ -41,6 +42,9 @@ "directEditing" ], "properties": { + "windows_compatible_filenames": { + "type": "boolean" + }, "$comment": { "type": "string", "nullable": true diff --git a/apps/files/tests/AdvancedCapabilitiesTest.php b/apps/files/tests/AdvancedCapabilitiesTest.php new file mode 100644 index 0000000000000..af38c51a4a2b3 --- /dev/null +++ b/apps/files/tests/AdvancedCapabilitiesTest.php @@ -0,0 +1,47 @@ +service = $this->createMock(SettingsService::class); + $this->capabilities = new AdvancedCapabilities($this->service); + } + + /** + * @dataProvider dataGetCapabilities + */ + public function testGetCapabilities(bool $wcf): void { + $this->service + ->expects(self::once()) + ->method('hasFilesWindowsSupport') + ->willReturn($wcf); + + self::assertEqualsCanonicalizing(['files' => [ 'windows_compatible_filenames' => $wcf ]], $this->capabilities->getCapabilities()); + } + + public static function dataGetCapabilities(): array { + return [ + 'WCF enabled' => [ + true, + ], + 'WCF disabled' => [ + false, + ], + ]; + } +}