Skip to content

Commit a68f186

Browse files
committed
Following logic
Signed-off-by: Hoang Pham <[email protected]>
1 parent 4aadede commit a68f186

File tree

12 files changed

+1718
-157
lines changed

12 files changed

+1718
-157
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
/vendor/
99
/node_modules/
1010
/backup/
11+
/recordings/
1112

1213
.php-cs-fixer.cache
1314
.phpunit.result.cache

lib/AppInfo/Application.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,20 @@
1515
use OCA\Whiteboard\Listener\AddContentSecurityPolicyListener;
1616
use OCA\Whiteboard\Listener\BeforeTemplateRenderedListener;
1717
use OCA\Whiteboard\Listener\LoadViewerListener;
18+
use OCA\Whiteboard\Listener\NodeCreatedListener;
1819
use OCA\Whiteboard\Listener\RegisterTemplateCreatorListener;
1920
use OCP\AppFramework\App;
2021
use OCP\AppFramework\Bootstrap\IBootContext;
2122
use OCP\AppFramework\Bootstrap\IBootstrap;
2223
use OCP\AppFramework\Bootstrap\IRegistrationContext;
24+
use OCP\Files\Events\Node\NodeCreatedEvent;
2325
use OCP\Files\Template\ITemplateManager;
2426
use OCP\Files\Template\RegisterTemplateCreatorEvent;
2527
use OCP\IL10N;
2628
use OCP\Security\CSP\AddContentSecurityPolicyEvent;
2729
use OCP\Util;
30+
use Psr\Container\ContainerExceptionInterface;
31+
use Throwable;
2832

2933
/**
3034
* @psalm-suppress UndefinedClass
@@ -44,8 +48,13 @@ public function register(IRegistrationContext $context): void {
4448
$context->registerEventListener(LoadViewer::class, LoadViewerListener::class);
4549
$context->registerEventListener(RegisterTemplateCreatorEvent::class, RegisterTemplateCreatorListener::class);
4650
$context->registerEventListener(BeforeTemplateRenderedEvent::class, BeforeTemplateRenderedListener::class);
51+
$context->registerEventListener(NodeCreatedEvent::class, NodeCreatedListener::class);
4752
}
4853

54+
/**
55+
* @throws ContainerExceptionInterface
56+
* @throws Throwable
57+
*/
4958
public function boot(IBootContext $context): void {
5059
[$major] = Util::getVersion();
5160
if ($major < 30) {

lib/Listener/NodeCreatedListener.php

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
/**
6+
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
7+
* SPDX-License-Identifier: AGPL-3.0-or-later
8+
*/
9+
10+
namespace OCA\Whiteboard\Listener;
11+
12+
use OC\Share\Constants as ShareConstants;
13+
use OCP\AppFramework\Http\Response;
14+
use OCP\Constants;
15+
use OCP\EventDispatcher\Event;
16+
use OCP\EventDispatcher\IEventListener;
17+
use OCP\Files\NotFoundException;
18+
use OCP\Share;
19+
use Psr\Log\LoggerInterface;
20+
use OCP\Files\Events\Node\NodeCreatedEvent;
21+
22+
23+
/** @template-implements IEventListener<NodeCreatedEvent|Event> */
24+
/**
25+
* @psalm-suppress UndefinedClass
26+
* @psalm-suppress MissingTemplateParam
27+
*/
28+
class NodeCreatedListener implements IEventListener {
29+
public function __construct(
30+
private Share\IManager $shareManager,
31+
private Response $response,
32+
private LoggerInterface $logger
33+
) {
34+
35+
}
36+
37+
/**
38+
* @throws NotFoundException
39+
* @throws \Exception
40+
*/
41+
public function handle(Event $event): void {
42+
if (!($event instanceof NodeCreatedEvent)) {
43+
return;
44+
}
45+
46+
$node = $event->getNode();
47+
$existingShares = $this->shareManager->getSharedWith(null, ShareConstants::SHARE_TYPE_LINK, $node->getId());
48+
if(!empty($existingShares)) {
49+
$this->logger->critical('Whiteboard share already exists for node ' . $node->getId());
50+
return;
51+
}
52+
53+
$this->logger->critical('Creating whiteboard share for node ' . $node->getId());
54+
55+
$share = $this->shareManager->newShare();
56+
$share->setNode($node);
57+
$share->setShareType(ShareConstants::SHARE_TYPE_LINK);
58+
$share->setPermissions(Constants::PERMISSION_READ);
59+
$this->shareManager->createShare($share);
60+
}
61+
}

0 commit comments

Comments
 (0)