Remove the untyped calendar update event

Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
This commit is contained in:
Christoph Wurst 2021-05-07 17:09:37 +02:00
parent 884e34b12a
commit cebe951b8e
No known key found for this signature in database
GPG Key ID: CC42AC2A7F0E56D8
4 changed files with 26 additions and 21 deletions

View File

@ -57,6 +57,7 @@ use OCA\DAV\Events\CalendarObjectCreatedEvent;
use OCA\DAV\Events\CalendarObjectDeletedEvent; use OCA\DAV\Events\CalendarObjectDeletedEvent;
use OCA\DAV\Events\CalendarObjectUpdatedEvent; use OCA\DAV\Events\CalendarObjectUpdatedEvent;
use OCA\DAV\Events\CalendarShareUpdatedEvent; use OCA\DAV\Events\CalendarShareUpdatedEvent;
use OCA\DAV\Events\CalendarUpdatedEvent;
use OCA\DAV\HookManager; use OCA\DAV\HookManager;
use OCA\DAV\Listener\ActivityUpdaterListener; use OCA\DAV\Listener\ActivityUpdaterListener;
use OCA\DAV\Listener\CalendarContactInteractionListener; use OCA\DAV\Listener\CalendarContactInteractionListener;
@ -119,6 +120,7 @@ class Application extends App implements IBootstrap {
$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);
$context->registerEventListener(CalendarUpdatedEvent::class, ActivityUpdaterListener::class);
$context->registerEventListener(CalendarObjectCreatedEvent::class, ActivityUpdaterListener::class); $context->registerEventListener(CalendarObjectCreatedEvent::class, ActivityUpdaterListener::class);
$context->registerEventListener(CalendarObjectCreatedEvent::class, CalendarContactInteractionListener::class); $context->registerEventListener(CalendarObjectCreatedEvent::class, CalendarContactInteractionListener::class);
$context->registerEventListener(CalendarObjectCreatedEvent::class, CalendarObjectReminderUpdaterListener::class); $context->registerEventListener(CalendarObjectCreatedEvent::class, CalendarObjectReminderUpdaterListener::class);
@ -200,15 +202,6 @@ class Application extends App implements IBootstrap {
$syncService->updateUser($user); $syncService->updateUser($user);
}); });
$dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::updateCalendar', function (GenericEvent $event) use ($container) {
/** @var Backend $backend */
$backend = $container->query(Backend::class);
$backend->onCalendarUpdate(
$event->getArgument('calendarData'),
$event->getArgument('shares'),
$event->getArgument('propertyMutations')
);
});
$dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::updateShares', function (GenericEvent $event) use ($container) { $dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::updateShares', function (GenericEvent $event) use ($container) {
/** @var Backend $backend */ /** @var Backend $backend */
$backend = $container->query(Backend::class); $backend = $container->query(Backend::class);

View File

@ -861,14 +861,6 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
$calendarData = $this->getCalendarById($calendarId); $calendarData = $this->getCalendarById($calendarId);
$shares = $this->getShares($calendarId); $shares = $this->getShares($calendarId);
$this->dispatcher->dispatchTyped(new CalendarUpdatedEvent((int)$calendarId, $calendarData, $shares, $mutations)); $this->dispatcher->dispatchTyped(new CalendarUpdatedEvent((int)$calendarId, $calendarData, $shares, $mutations));
$this->legacyDispatcher->dispatch('\OCA\DAV\CalDAV\CalDavBackend::updateCalendar', new GenericEvent(
'\OCA\DAV\CalDAV\CalDavBackend::updateCalendar',
[
'calendarId' => $calendarId,
'calendarData' => $calendarData,
'shares' => $shares,
'propertyMutations' => $mutations,
]));
return true; return true;
}); });

View File

@ -31,6 +31,7 @@ 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;
use OCA\DAV\Events\CalendarObjectUpdatedEvent; use OCA\DAV\Events\CalendarObjectUpdatedEvent;
use OCA\DAV\Events\CalendarUpdatedEvent;
use OCP\EventDispatcher\Event; use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener; use OCP\EventDispatcher\IEventListener;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
@ -67,7 +68,24 @@ class ActivityUpdaterListener implements IEventListener {
'exception' => $e, 'exception' => $e,
]); ]);
} }
} else if ($event instanceof CalendarDeletedEvent) { } elseif ($event instanceof CalendarUpdatedEvent) {
try {
$this->activityBackend->onCalendarUpdate(
$event->getCalendarData(),
$event->getShares(),
$event->getMutations()
);
$this->logger->debug(
sprintf('Activity generated for changed calendar %d', $event->getCalendarId())
);
} catch (Throwable $e) {
// Any error with activities shouldn't abort the calendar update, so we just log it
$this->logger->error('Error generating activities for changed calendar: ' . $e->getMessage(), [
'exception' => $e,
]);
}
} elseif ($event instanceof CalendarDeletedEvent) {
try { try {
$this->activityBackend->onCalendarDelete( $this->activityBackend->onCalendarDelete(
$event->getCalendarData(), $event->getCalendarData(),

View File

@ -63,9 +63,11 @@ class CalDavBackendTest extends AbstractCalDavBackend {
'{DAV:}displayname' => 'Unit test', '{DAV:}displayname' => 'Unit test',
'{urn:ietf:params:xml:ns:caldav}calendar-description' => 'Calendar used for unit testing' '{urn:ietf:params:xml:ns:caldav}calendar-description' => 'Calendar used for unit testing'
]); ]);
$this->legacyDispatcher->expects($this->at(0)) $this->dispatcher->expects(self::once())
->method('dispatch') ->method('dispatchTyped')
->with('\OCA\DAV\CalDAV\CalDavBackend::updateCalendar'); ->with(self::callback(function ($event) {
return $event instanceof CalendarUpdatedEvent;
}));
$this->backend->updateCalendar($calendarId, $patch); $this->backend->updateCalendar($calendarId, $patch);
$patch->commit(); $patch->commit();
$this->assertEquals(1, $this->backend->getCalendarsForUserCount(self::UNIT_TEST_USER)); $this->assertEquals(1, $this->backend->getCalendarsForUserCount(self::UNIT_TEST_USER));