Clean up reminder actions and call methods directly

Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
This commit is contained in:
Christoph Wurst 2021-05-07 11:43:31 +02:00
parent 257613e6ef
commit f5462650f1
No known key found for this signature in database
GPG Key ID: CC42AC2A7F0E56D8
4 changed files with 21 additions and 46 deletions

View File

@ -125,7 +125,7 @@ class BuildReminderIndexBackgroundJob extends QueuedJob {
$row['component'] = $row['componenttype'];
try {
$this->reminderService->onTouchCalendarObject('\OCA\DAV\CalDAV\CalDavBackend::createCalendarObject', $row);
$this->reminderService->onCalendarObjectCreate($row);
} catch (\Exception $ex) {
$this->logger->logException($ex);
}

View File

@ -44,6 +44,7 @@ use Sabre\VObject\InvalidDataException;
use Sabre\VObject\ParseException;
use Sabre\VObject\Recur\EventIterator;
use Sabre\VObject\Recur\NoInstancesException;
use function strcasecmp;
class ReminderService {
@ -154,39 +155,15 @@ class ReminderService {
}
/**
* @param string $action
* @param array $objectData
* @throws VObject\InvalidDataException
*/
public function onTouchCalendarObject(string $action,
array $objectData):void {
public function onCalendarObjectCreate(array $objectData):void {
// We only support VEvents for now
if (strcasecmp($objectData['component'], 'vevent') !== 0) {
return;
}
switch ($action) {
case '\OCA\DAV\CalDAV\CalDavBackend::createCalendarObject':
$this->onCalendarObjectCreate($objectData);
break;
case '\OCA\DAV\CalDAV\CalDavBackend::updateCalendarObject':
$this->onCalendarObjectEdit($objectData);
break;
case '\OCA\DAV\CalDAV\CalDavBackend::deleteCalendarObject':
$this->onCalendarObjectDelete($objectData);
break;
default:
break;
}
}
/**
* @param array $objectData
*/
private function onCalendarObjectCreate(array $objectData):void {
$calendarData = is_resource($objectData['calendardata'])
? stream_get_contents($objectData['calendardata'])
: $objectData['calendardata'];
@ -307,8 +284,9 @@ class ReminderService {
/**
* @param array $objectData
* @throws VObject\InvalidDataException
*/
private function onCalendarObjectEdit(array $objectData):void {
public function onCalendarObjectEdit(array $objectData):void {
// TODO - this can be vastly improved
// - get cached reminders
// - ...
@ -319,8 +297,14 @@ class ReminderService {
/**
* @param array $objectData
* @throws VObject\InvalidDataException
*/
private function onCalendarObjectDelete(array $objectData):void {
public function onCalendarObjectDelete(array $objectData):void {
// We only support VEvents for now
if (strcasecmp($objectData['component'], 'vevent') !== 0) {
return;
}
$this->backend->cleanRemindersForEvent((int) $objectData['id']);
}

View File

@ -74,8 +74,7 @@ class CalendarObjectReminderUpdaterListener implements IEventListener {
}
} elseif ($event instanceof CalendarObjectCreatedEvent) {
try {
$this->reminderService->onTouchCalendarObject(
'\OCA\DAV\CalDAV\CalDavBackend::createCalendarObject',
$this->reminderService->onCalendarObjectCreate(
$event->getObjectData()
);
@ -90,8 +89,7 @@ class CalendarObjectReminderUpdaterListener implements IEventListener {
}
} elseif ($event instanceof CalendarObjectUpdatedEvent) {
try {
$this->reminderService->onTouchCalendarObject(
'\OCA\DAV\CalDAV\CalDavBackend::updateCalendarObject',
$this->reminderService->onCalendarObjectEdit(
$event->getObjectData()
);
@ -106,8 +104,7 @@ class CalendarObjectReminderUpdaterListener implements IEventListener {
}
} elseif ($event instanceof CalendarObjectDeletedEvent) {
try {
$this->reminderService->onTouchCalendarObject(
'\OCA\DAV\CalDAV\CalDavBackend::deleteCalendarObject',
$this->reminderService->onCalendarObjectDelete(
$event->getObjectData()
);

View File

@ -211,17 +211,15 @@ EOD;
->method('cleanRemindersForEvent')
->with(44);
$action = '\OCA\DAV\CalDAV\CalDavBackend::deleteCalendarObject';
$objectData = [
'id' => '44',
'component' => 'vevent',
];
$this->reminderService->onTouchCalendarObject($action, $objectData);
$this->reminderService->onCalendarObjectDelete($objectData);
}
public function testOnCalendarObjectCreateSingleEntry():void {
$action = '\OCA\DAV\CalDAV\CalDavBackend::createCalendarObject';
$objectData = [
'calendardata' => self::CALENDAR_DATA,
'id' => '42',
@ -242,11 +240,10 @@ EOD;
->with()
->willReturn(\DateTime::createFromFormat(\DateTime::ATOM, '2016-06-08T00:00:00+00:00'));
$this->reminderService->onTouchCalendarObject($action, $objectData);
$this->reminderService->onCalendarObjectCreate($objectData);
}
public function testOnCalendarObjectCreateSingleEntryWithRepeat(): void {
$action = '\OCA\DAV\CalDAV\CalDavBackend::createCalendarObject';
$objectData = [
'calendardata' => self::CALENDAR_DATA_REPEAT,
'id' => '42',
@ -270,11 +267,10 @@ EOD;
->with()
->willReturn(\DateTime::createFromFormat(\DateTime::ATOM, '2016-06-08T00:00:00+00:00'));
$this->reminderService->onTouchCalendarObject($action, $objectData);
$this->reminderService->onCalendarObjectCreate($objectData);
}
public function testOnCalendarObjectCreateRecurringEntry(): void {
$action = '\OCA\DAV\CalDAV\CalDavBackend::createCalendarObject';
$objectData = [
'calendardata' => self::CALENDAR_DATA_RECURRING,
'id' => '42',
@ -295,11 +291,10 @@ EOD;
->with()
->willReturn(\DateTime::createFromFormat(\DateTime::ATOM, '2016-06-29T00:00:00+00:00'));
$this->reminderService->onTouchCalendarObject($action, $objectData);
$this->reminderService->onCalendarObjectCreate($objectData);
}
public function testOnCalendarObjectCreateEmpty():void {
$action = '\OCA\DAV\CalDAV\CalDavBackend::createCalendarObject';
$objectData = [
'calendardata' => self::CALENDAR_DATA_NO_ALARM,
'id' => '42',
@ -310,11 +305,10 @@ EOD;
$this->backend->expects($this->never())
->method('insertReminder');
$this->reminderService->onTouchCalendarObject($action, $objectData);
$this->reminderService->onCalendarObjectCreate($objectData);
}
public function testOnCalendarObjectCreateRecurringEntryWithRepeat():void {
$action = '\OCA\DAV\CalDAV\CalDavBackend::createCalendarObject';
$objectData = [
'calendardata' => self::CALENDAR_DATA_RECURRING_REPEAT,
'id' => '42',
@ -339,7 +333,7 @@ EOD;
->with()
->willReturn(\DateTime::createFromFormat(\DateTime::ATOM, '2016-06-29T00:00:00+00:00'));
$this->reminderService->onTouchCalendarObject($action, $objectData);
$this->reminderService->onCalendarObjectCreate($objectData);
}
public function testProcessReminders():void {