Skip to content

Commit efb1b9d

Browse files
authored
Merge pull request #58588 from nextcloud/backport/54048/stable33
[stable33] fix(files_external): ignore unsatisfied optional dependencies
2 parents 97911b7 + 44a417e commit efb1b9d

4 files changed

Lines changed: 17 additions & 9 deletions

File tree

apps/files_external/lib/Controller/StoragesController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ protected function validate(StorageConfig $storage) {
140140
$backend = $storage->getBackend();
141141
/** @var AuthMechanism */
142142
$authMechanism = $storage->getAuthMechanism();
143-
if ($backend->checkDependencies()) {
143+
if ($backend->checkRequiredDependencies()) {
144144
// invalid backend
145145
return new DataResponse(
146146
[

apps/files_external/lib/Lib/DependencyTrait.php

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,23 @@
1313
trait DependencyTrait {
1414

1515
/**
16-
* Check if object is valid for use
16+
* Check if object has unsatisfied required or optional dependencies
1717
*
1818
* @return MissingDependency[] Unsatisfied dependencies
1919
*/
2020
public function checkDependencies() {
2121
return []; // no dependencies by default
2222
}
23+
24+
/**
25+
* Check if object has unsatisfied required dependencies
26+
*
27+
* @return MissingDependency[] Unsatisfied required dependencies
28+
*/
29+
public function checkRequiredDependencies() {
30+
return array_filter(
31+
$this->checkDependencies(),
32+
fn (MissingDependency $dependency) => !$dependency->isOptional()
33+
);
34+
}
2335
}

apps/files_external/lib/Service/BackendService.php

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
use OCA\Files_External\Lib\Backend\Backend;
1515
use OCA\Files_External\Lib\Config\IAuthMechanismProvider;
1616
use OCA\Files_External\Lib\Config\IBackendProvider;
17-
use OCA\Files_External\Lib\MissingDependency;
1817
use OCP\EventDispatcher\GenericEvent;
1918
use OCP\EventDispatcher\IEventDispatcher;
2019
use OCP\IAppConfig;
@@ -179,10 +178,7 @@ public function getBackends() {
179178
* @return Backend[]
180179
*/
181180
public function getAvailableBackends() {
182-
return array_filter($this->getBackends(), function ($backend) {
183-
$missing = array_filter($backend->checkDependencies(), fn (MissingDependency $dependency) => !$dependency->isOptional());
184-
return count($missing) === 0;
185-
});
181+
return array_filter($this->getBackends(), fn (Backend $backend) => !$backend->checkRequiredDependencies());
186182
}
187183

188184
/**

apps/files_external/tests/Service/BackendServiceTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,11 +175,11 @@ public function testGetAvailableBackends(): void {
175175

176176
$backendAvailable = $this->getBackendMock('\Backend\Available');
177177
$backendAvailable->expects($this->once())
178-
->method('checkDependencies')
178+
->method('checkRequiredDependencies')
179179
->willReturn([]);
180180
$backendNotAvailable = $this->getBackendMock('\Backend\NotAvailable');
181181
$backendNotAvailable->expects($this->once())
182-
->method('checkDependencies')
182+
->method('checkRequiredDependencies')
183183
->willReturn([
184184
$this->getMockBuilder('\OCA\Files_External\Lib\MissingDependency')
185185
->disableOriginalConstructor()

0 commit comments

Comments
 (0)