Remove the untyped calendar create event

Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
This commit is contained in:
Christoph Wurst 2021-05-07 16:58:33 +02:00
parent f8c519f5f0
commit 884e34b12a
No known key found for this signature in database
GPG Key ID: CC42AC2A7F0E56D8
5 changed files with 31 additions and 20 deletions

View File

@ -51,6 +51,7 @@ use OCA\DAV\CardDAV\CardDavBackend;
use OCA\DAV\CardDAV\ContactsManager; use OCA\DAV\CardDAV\ContactsManager;
use OCA\DAV\CardDAV\PhotoCache; use OCA\DAV\CardDAV\PhotoCache;
use OCA\DAV\CardDAV\SyncService; use OCA\DAV\CardDAV\SyncService;
use OCA\DAV\Events\CalendarCreatedEvent;
use OCA\DAV\Events\CalendarDeletedEvent; use OCA\DAV\Events\CalendarDeletedEvent;
use OCA\DAV\Events\CalendarObjectCreatedEvent; use OCA\DAV\Events\CalendarObjectCreatedEvent;
use OCA\DAV\Events\CalendarObjectDeletedEvent; use OCA\DAV\Events\CalendarObjectDeletedEvent;
@ -114,6 +115,7 @@ class Application extends App implements IBootstrap {
/** /**
* Register event listeners * Register event listeners
*/ */
$context->registerEventListener(CalendarCreatedEvent::class, ActivityUpdaterListener::class);
$context->registerEventListener(CalendarDeletedEvent::class, ActivityUpdaterListener::class); $context->registerEventListener(CalendarDeletedEvent::class, ActivityUpdaterListener::class);
$context->registerEventListener(CalendarDeletedEvent::class, CalendarObjectReminderUpdaterListener::class); $context->registerEventListener(CalendarDeletedEvent::class, CalendarObjectReminderUpdaterListener::class);
$context->registerEventListener(CalendarDeletedEvent::class, CalendarDeletionDefaultUpdaterListener::class); $context->registerEventListener(CalendarDeletedEvent::class, CalendarDeletionDefaultUpdaterListener::class);
@ -198,13 +200,6 @@ class Application extends App implements IBootstrap {
$syncService->updateUser($user); $syncService->updateUser($user);
}); });
$dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::createCalendar', function (GenericEvent $event) use ($container) {
/** @var Backend $backend */
$backend = $container->query(Backend::class);
$backend->onCalendarAdd(
$event->getArgument('calendarData')
);
});
$dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::updateCalendar', function (GenericEvent $event) use ($container) { $dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::updateCalendar', function (GenericEvent $event) use ($container) {
/** @var Backend $backend */ /** @var Backend $backend */
$backend = $container->query(Backend::class); $backend = $container->query(Backend::class);

View File

@ -810,12 +810,6 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
$calendarData = $this->getCalendarById($calendarId); $calendarData = $this->getCalendarById($calendarId);
$this->dispatcher->dispatchTyped(new CalendarCreatedEvent((int)$calendarId, $calendarData)); $this->dispatcher->dispatchTyped(new CalendarCreatedEvent((int)$calendarId, $calendarData));
$this->legacyDispatcher->dispatch('\OCA\DAV\CalDAV\CalDavBackend::createCalendar', new GenericEvent(
'\OCA\DAV\CalDAV\CalDavBackend::createCalendar',
[
'calendarId' => $calendarId,
'calendarData' => $calendarData,
]));
return $calendarId; return $calendarId;
} }

View File

@ -26,6 +26,7 @@ declare(strict_types=1);
namespace OCA\DAV\Listener; namespace OCA\DAV\Listener;
use OCA\DAV\CalDAV\Activity\Backend as ActivityBackend; use OCA\DAV\CalDAV\Activity\Backend as ActivityBackend;
use OCA\DAV\Events\CalendarCreatedEvent;
use OCA\DAV\Events\CalendarDeletedEvent; use OCA\DAV\Events\CalendarDeletedEvent;
use OCA\DAV\Events\CalendarObjectCreatedEvent; use OCA\DAV\Events\CalendarObjectCreatedEvent;
use OCA\DAV\Events\CalendarObjectDeletedEvent; use OCA\DAV\Events\CalendarObjectDeletedEvent;
@ -51,7 +52,22 @@ class ActivityUpdaterListener implements IEventListener {
} }
public function handle(Event $event): void { public function handle(Event $event): void {
if ($event instanceof CalendarDeletedEvent) { if ($event instanceof CalendarCreatedEvent) {
try {
$this->activityBackend->onCalendarAdd(
$event->getCalendarData()
);
$this->logger->debug(
sprintf('Activity generated for new calendar %d', $event->getCalendarId())
);
} catch (Throwable $e) {
// Any error with activities shouldn't abort the calendar creation, so we just log it
$this->logger->error('Error generating activities for a new calendar: ' . $e->getMessage(), [
'exception' => $e,
]);
}
} else if ($event instanceof CalendarDeletedEvent) {
try { try {
$this->activityBackend->onCalendarDelete( $this->activityBackend->onCalendarDelete(
$event->getCalendarData(), $event->getCalendarData(),

View File

@ -31,6 +31,7 @@ use OC\KnownUser\KnownUserService;
use OCA\DAV\CalDAV\CalDavBackend; use OCA\DAV\CalDAV\CalDavBackend;
use OCA\DAV\CalDAV\Proxy\ProxyMapper; use OCA\DAV\CalDAV\Proxy\ProxyMapper;
use OCA\DAV\Connector\Sabre\Principal; use OCA\DAV\Connector\Sabre\Principal;
use OCA\DAV\Events\CalendarCreatedEvent;
use OCA\DAV\Events\CalendarDeletedEvent; use OCA\DAV\Events\CalendarDeletedEvent;
use OCA\DAV\Events\CalendarObjectCreatedEvent; use OCA\DAV\Events\CalendarObjectCreatedEvent;
use OCP\App\IAppManager; use OCP\App\IAppManager;
@ -150,9 +151,11 @@ abstract class AbstractCalDavBackend extends TestCase {
} }
protected function createTestCalendar() { protected function createTestCalendar() {
$this->legacyDispatcher->expects($this->at(0)) $this->dispatcher->expects(self::once())
->method('dispatch') ->method('dispatchTyped')
->with('\OCA\DAV\CalDAV\CalDavBackend::createCalendar'); ->with(self::callback(function ($event) {
return $event instanceof CalendarCreatedEvent;
}));
$this->backend->createCalendar(self::UNIT_TEST_USER, 'Example', [ $this->backend->createCalendar(self::UNIT_TEST_USER, 'Example', [
'{http://apple.com/ns/ical/}calendar-color' => '#1C4587FF' '{http://apple.com/ns/ical/}calendar-color' => '#1C4587FF'

View File

@ -36,6 +36,7 @@ use DateTime;
use DateTimeZone; use DateTimeZone;
use OCA\DAV\CalDAV\CalDavBackend; use OCA\DAV\CalDAV\CalDavBackend;
use OCA\DAV\CalDAV\Calendar; use OCA\DAV\CalDAV\Calendar;
use OCA\DAV\Events\CalendarCreatedEvent;
use OCA\DAV\Events\CalendarDeletedEvent; use OCA\DAV\Events\CalendarDeletedEvent;
use OCA\DAV\Events\CalendarObjectCreatedEvent; use OCA\DAV\Events\CalendarObjectCreatedEvent;
use OCA\DAV\Events\CalendarUpdatedEvent; use OCA\DAV\Events\CalendarUpdatedEvent;
@ -527,9 +528,11 @@ EOD;
} }
public function testPublications() { public function testPublications() {
$this->legacyDispatcher->expects($this->at(0)) $this->dispatcher->expects(self::once())
->method('dispatch') ->method('dispatchTyped')
->with('\OCA\DAV\CalDAV\CalDavBackend::createCalendar'); ->with(self::callback(function ($event) {
return $event instanceof CalendarCreatedEvent;
}));
$this->backend->createCalendar(self::UNIT_TEST_USER, 'Example', []); $this->backend->createCalendar(self::UNIT_TEST_USER, 'Example', []);