Skip to content

Commit 513ecea

Browse files
committed
refactor(files): Use constructor properties in Sharing
Signed-off-by: provokateurin <kate@provokateurin.de>
1 parent 7e3af67 commit 513ecea

7 files changed

Lines changed: 34 additions & 52 deletions

File tree

apps/files/lib/AppInfo/Application.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,20 +116,20 @@ public function register(IRegistrationContext $context): void {
116116
$registry->markPropertyTypeCompatibleWithSourceType(NodeGridViewSharePropertyType::class, NodeShareSourceType::class);
117117
$registry->markPropertyTypeCompatibleWithRecipientType(NodeGridViewSharePropertyType::class, TokenShareRecipientType::class);
118118

119-
$registry->registerPermissionType(NodeShareSourceType::class, new NodeCreateSharePermissionType());
119+
$registry->registerPermissionType(NodeShareSourceType::class, Server::get(NodeCreateSharePermissionType::class));
120120
$registry->markPermissionTypeCompatibleWithPermissionPreset(NodeCreateSharePermissionType::class, EditSharePermissionPreset::class);
121121

122122
$registry->registerPermissionType(NodeShareSourceType::class, new NodeReadSharePermissionType());
123123
$registry->markPermissionTypeCompatibleWithPermissionPreset(NodeReadSharePermissionType::class, ViewSharePermissionPreset::class);
124124
$registry->markPermissionTypeCompatibleWithPermissionPreset(NodeReadSharePermissionType::class, EditSharePermissionPreset::class);
125125

126-
$registry->registerPermissionType(NodeShareSourceType::class, new NodeUpdateSharePermissionType());
126+
$registry->registerPermissionType(NodeShareSourceType::class, Server::get(NodeUpdateSharePermissionType::class));
127127
$registry->markPermissionTypeCompatibleWithPermissionPreset(NodeUpdateSharePermissionType::class, EditSharePermissionPreset::class);
128128

129-
$registry->registerPermissionType(NodeShareSourceType::class, new NodeDeleteSharePermissionType());
129+
$registry->registerPermissionType(NodeShareSourceType::class, Server::get(NodeDeleteSharePermissionType::class));
130130
$registry->markPermissionTypeCompatibleWithPermissionPreset(NodeDeleteSharePermissionType::class, EditSharePermissionPreset::class);
131131

132-
$registry->registerPermissionType(NodeShareSourceType::class, new NodeDownloadSharePermissionType());
132+
$registry->registerPermissionType(NodeShareSourceType::class, Server::get(NodeDownloadSharePermissionType::class));
133133
$registry->markPermissionTypeCompatibleWithPermissionPreset(NodeDownloadSharePermissionType::class, ViewSharePermissionPreset::class);
134134
$registry->markPermissionTypeCompatibleWithPermissionPreset(NodeDownloadSharePermissionType::class, EditSharePermissionPreset::class);
135135
}

apps/files/lib/Sharing/Permission/NodeCreateSharePermissionType.php

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,12 @@
1313
use OCP\Constants;
1414
use OCP\IAppConfig;
1515
use OCP\L10N\IFactory;
16-
use OCP\Server;
1716
use OCP\Sharing\Permission\ISharePermissionType;
1817

19-
final class NodeCreateSharePermissionType implements ISharePermissionType {
20-
private ?IAppConfig $appConfig = null;
21-
22-
private function getAppConfig(): IAppConfig {
23-
return $this->appConfig ??= Server::get(IAppConfig::class);
18+
final readonly class NodeCreateSharePermissionType implements ISharePermissionType {
19+
public function __construct(
20+
private IAppConfig $appConfig,
21+
) {
2422
}
2523

2624
#[\Override]
@@ -40,6 +38,6 @@ public function getPriority(): int {
4038

4139
#[\Override]
4240
public function isEnabledByDefault(): bool {
43-
return ($this->getAppConfig()->getValueInt(\OC\Core\AppInfo\Application::APP_ID, 'shareapi_default_permissions') & Constants::PERMISSION_CREATE) === Constants::PERMISSION_CREATE;
41+
return ($this->appConfig->getValueInt(\OC\Core\AppInfo\Application::APP_ID, 'shareapi_default_permissions') & Constants::PERMISSION_CREATE) === Constants::PERMISSION_CREATE;
4442
}
4543
}

apps/files/lib/Sharing/Permission/NodeDeleteSharePermissionType.php

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,12 @@
1313
use OCP\Constants;
1414
use OCP\IAppConfig;
1515
use OCP\L10N\IFactory;
16-
use OCP\Server;
1716
use OCP\Sharing\Permission\ISharePermissionType;
1817

19-
final class NodeDeleteSharePermissionType implements ISharePermissionType {
20-
private ?IAppConfig $appConfig = null;
21-
22-
private function getAppConfig(): IAppConfig {
23-
return $this->appConfig ??= Server::get(IAppConfig::class);
18+
final readonly class NodeDeleteSharePermissionType implements ISharePermissionType {
19+
public function __construct(
20+
private IAppConfig $appConfig,
21+
) {
2422
}
2523

2624
#[\Override]
@@ -40,6 +38,6 @@ public function getPriority(): int {
4038

4139
#[\Override]
4240
public function isEnabledByDefault(): bool {
43-
return ($this->getAppConfig()->getValueInt(\OC\Core\AppInfo\Application::APP_ID, 'shareapi_default_permissions') & Constants::PERMISSION_DELETE) === Constants::PERMISSION_DELETE;
41+
return ($this->appConfig->getValueInt(\OC\Core\AppInfo\Application::APP_ID, 'shareapi_default_permissions') & Constants::PERMISSION_DELETE) === Constants::PERMISSION_DELETE;
4442
}
4543
}

apps/files/lib/Sharing/Permission/NodeDownloadSharePermissionType.php

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,13 @@
1111

1212
use OCA\Files\AppInfo\Application;
1313
use OCP\L10N\IFactory;
14-
use OCP\Server;
1514
use OCP\Share\IManager;
1615
use OCP\Sharing\Permission\ISharePermissionType;
1716

18-
final class NodeDownloadSharePermissionType implements ISharePermissionType {
19-
private ?IManager $legacyManager = null;
20-
21-
private function getLegacyManager(): IManager {
22-
return $this->legacyManager ??= Server::get(IManager::class);
17+
final readonly class NodeDownloadSharePermissionType implements ISharePermissionType {
18+
public function __construct(
19+
private IManager $legacyManager,
20+
) {
2321
}
2422

2523
#[\Override]
@@ -30,7 +28,7 @@ public function getDisplayName(IFactory $l10nFactory): string {
3028
#[\Override]
3129
public function getHint(IFactory $l10nFactory): ?string {
3230
// If previews are still allowed, the download option is only hidden, because on a technical level it is still possible to download.
33-
if ($this->getLegacyManager()->allowViewWithoutDownload()) {
31+
if ($this->legacyManager->allowViewWithoutDownload()) {
3432
return $l10nFactory->get(Application::APP_ID)->t('When disabled, the option to download will be hidden');
3533
}
3634

apps/files/lib/Sharing/Permission/NodeUpdateSharePermissionType.php

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,12 @@
1313
use OCP\Constants;
1414
use OCP\IAppConfig;
1515
use OCP\L10N\IFactory;
16-
use OCP\Server;
1716
use OCP\Sharing\Permission\ISharePermissionType;
1817

19-
final class NodeUpdateSharePermissionType implements ISharePermissionType {
20-
private ?IAppConfig $appConfig = null;
21-
22-
private function getAppConfig(): IAppConfig {
23-
return $this->appConfig ??= Server::get(IAppConfig::class);
18+
final readonly class NodeUpdateSharePermissionType implements ISharePermissionType {
19+
public function __construct(
20+
private IAppConfig $appConfig,
21+
) {
2422
}
2523

2624
#[\Override]
@@ -40,6 +38,6 @@ public function getPriority(): int {
4038

4139
#[\Override]
4240
public function isEnabledByDefault(): bool {
43-
return ($this->getAppConfig()->getValueInt(\OC\Core\AppInfo\Application::APP_ID, 'shareapi_default_permissions') & Constants::PERMISSION_UPDATE) === Constants::PERMISSION_UPDATE;
41+
return ($this->appConfig->getValueInt(\OC\Core\AppInfo\Application::APP_ID, 'shareapi_default_permissions') & Constants::PERMISSION_UPDATE) === Constants::PERMISSION_UPDATE;
4442
}
4543
}

apps/files/lib/Sharing/Source/NodeShareSourceType.php

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
use OCP\Interaction\Resources\NodeResource;
2424
use OCP\IURLGenerator;
2525
use OCP\L10N\IFactory;
26-
use OCP\Server;
2726
use OCP\Sharing\Icon\ShareIconURL;
2827
use OCP\Sharing\ISharingManager;
2928
use OCP\Sharing\ShareAccessContext;
@@ -33,41 +32,31 @@
3332
/**
3433
* @template-implements IEventListener<NodeDeletedEvent|MoveToTrashEvent>
3534
*/
36-
final class NodeShareSourceType implements IShareSourceType, IEventListener {
37-
private ?IRootFolder $rootFolder = null;
38-
39-
private ?IURLGenerator $urlGenerator = null;
40-
35+
final readonly class NodeShareSourceType implements IShareSourceType, IEventListener {
4136
public function __construct(
4237
IEventDispatcher $eventDispatcher,
43-
private readonly IDBConnection $dbConnection,
44-
private readonly ISharingManager $manager,
38+
private IDBConnection $dbConnection,
39+
private IRootFolder $rootFolder,
40+
private IURLGenerator $urlGenerator,
41+
private ISharingManager $manager,
4542
) {
4643
$eventDispatcher->addServiceListener(NodeDeletedEvent::class, self::class);
4744
$eventDispatcher->addServiceListener(MoveToTrashEvent::class, self::class);
4845
}
4946

50-
private function getRootFolder(): IRootFolder {
51-
return $this->rootFolder ??= Server::get(IRootFolder::class);
52-
}
53-
54-
private function getUrlGenerator(): IURLGenerator {
55-
return $this->urlGenerator ??= Server::get(IURLGenerator::class);
56-
}
57-
5847
#[\Override]
5948
public function getDisplayName(IFactory $l10nFactory): string {
6049
return $l10nFactory->get(Application::APP_ID)->t('File');
6150
}
6251

6352
#[\Override]
6453
public function validateSource(string $source): bool {
65-
return $this->getRootFolder()->getFirstNodeById((int)$source) instanceof Node;
54+
return $this->rootFolder->getFirstNodeById((int)$source) instanceof Node;
6655
}
6756

6857
#[\Override]
6958
public function getSourceDisplayName(string $source): ?string {
70-
$displayName = $this->getRootFolder()->getFirstNodeById((int)$source)?->getName();
59+
$displayName = $this->rootFolder->getFirstNodeById((int)$source)?->getName();
7160
if ($displayName === '') {
7261
return null;
7362
}
@@ -77,7 +66,7 @@ public function getSourceDisplayName(string $source): ?string {
7766

7867
#[\Override]
7968
public function getSourceIcon(string $source): ShareIconURL {
80-
$url = $this->getUrlGenerator()->linkToRouteAbsolute('core.Preview.getPreviewByFileId', ['fileId' => $source, 'x' => 64, 'y' => 64]);
69+
$url = $this->urlGenerator->linkToRouteAbsolute('core.Preview.getPreviewByFileId', ['fileId' => $source, 'x' => 64, 'y' => 64]);
8170

8271
return new ShareIconURL($url, $url);
8372
}

apps/files/tests/Sharing/Source/NodeShareSourceTypeTest.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use OCP\Files\IRootFolder;
1616
use OCP\Files\Node;
1717
use OCP\IDBConnection;
18+
use OCP\IURLGenerator;
1819
use OCP\IUser;
1920
use OCP\IUserManager;
2021
use OCP\Server;
@@ -56,7 +57,7 @@ public function setUp(): void {
5657
$userFolder = Server::get(IRootFolder::class)->getUserFolder($this->user1->getUID());
5758
$this->node = $userFolder->newFile('foo.txt', 'bar');
5859

59-
$this->sourceType = new NodeShareSourceType(Server::get(IEventDispatcher::class), $this->dbConnection, $this->manager);
60+
$this->sourceType = new NodeShareSourceType(Server::get(IEventDispatcher::class), $this->dbConnection, Server::get(IRootFolder::class), Server::get(IURLGenerator::class), $this->manager);
6061
}
6162

6263
#[\Override]

0 commit comments

Comments
 (0)