Browse Source

Make push notifications for calendar reminders opt-in

Signed-off-by: Georg Ehrke <developer@georgehrke.com>
pull/16970/head
Georg Ehrke 6 years ago
parent
commit
88f6d1c20e
No known key found for this signature in database GPG Key ID: 9D98FD9380A1CB43
  1. 9
      apps/dav/js/settings-admin-caldav.js
  2. 4
      apps/dav/lib/CalDAV/Reminder/NotificationProvider/PushProvider.php
  3. 1
      apps/dav/lib/Settings/CalDAVSettings.php
  4. 6
      apps/dav/templates/settings-admin-caldav.php
  5. 32
      apps/dav/tests/unit/CalDAV/Reminder/NotificationProvider/PushProviderTest.php

9
apps/dav/js/settings-admin-caldav.js

@ -41,4 +41,13 @@ $('#caldavSendRemindersNotifications').change(function() {
var val = $(this)[0].checked;
OCP.AppConfig.setValue('dav', 'sendEventReminders', val ? 'yes' : 'no');
$('#caldavSendRemindersNotificationsPush').prop('disabled', !val)
});
$('#caldavSendRemindersNotificationsPush').change(function() {
var val = $(this)[0].checked;
OCP.AppConfig.setValue('dav', 'sendEventRemindersPush', val ? 'yes' : 'no');
});

4
apps/dav/lib/CalDAV/Reminder/NotificationProvider/PushProvider.php

@ -83,6 +83,10 @@ class PushProvider extends AbstractProvider {
public function send(VEvent $vevent,
string $calendarDisplayName=null,
array $users=[]):void {
if ($this->config->getAppValue('dav', 'sendEventRemindersPush', 'no') !== 'yes') {
return;
}
$eventDetails = $this->extractEventDetails($vevent);
$eventDetails['calendar_displayname'] = $calendarDisplayName;

1
apps/dav/lib/Settings/CalDAVSettings.php

@ -49,6 +49,7 @@ class CalDAVSettings implements ISettings {
'send_invitations' => $this->config->getAppValue('dav', 'sendInvitations', 'yes'),
'generate_birthday_calendar' => $this->config->getAppValue('dav', 'generateBirthdayCalendar', 'yes'),
'send_reminders_notifications' => $this->config->getAppValue('dav', 'sendEventReminders', 'yes'),
'send_reminders_notifications_push' => $this->config->getAppValue('dav', 'sendEventRemindersPush', 'no'),
];
return new TemplateResponse('dav', 'settings-admin-caldav', $parameters);

6
apps/dav/templates/settings-admin-caldav.php

@ -93,4 +93,10 @@ script('dav', [
<br>
<em><?php p($l->t('Notifications will be send through background jobs, so these need to happen often enough.')); ?></em>
</p>
<p>
<input type="checkbox" name="caldav_send_reminders_notifications_push" id="caldavSendRemindersNotificationsPush" class="checkbox"
<?php ($_['send_reminders_notifications_push'] === 'yes') ? print_unescaped('checked="checked"') : null ?>
<?php ($_['send_reminders_notifications'] === 'yes') ? null : print_unescaped('disabled="disabled"') ?> />
<label for="caldavSendRemindersNotificationsPush"><?php p($l->t('Enable notifications for events via push')); ?></label>
</p>
</form>

32
apps/dav/tests/unit/CalDAV/Reminder/NotificationProvider/PushProviderTest.php

@ -63,6 +63,7 @@ class PushProviderTest extends AbstractNotificationProviderTest {
public function setUp() {
parent::setUp();
$this->config = $this->createMock(IConfig::class);
$this->manager = $this->createMock(IManager::class);
$this->timeFactory = $this->createMock(ITimeFactory::class);
@ -80,7 +81,38 @@ class PushProviderTest extends AbstractNotificationProviderTest {
$this->assertEquals(PushProvider::NOTIFICATION_TYPE, 'DISPLAY');
}
public function testNotSend(): void {
$this->config->expects($this->once())
->method('getAppValue')
->with('dav', 'sendEventRemindersPush', 'no')
->willReturn('no');
$this->manager->expects($this->never())
->method('createNotification');
$this->manager->expects($this->never())
->method('notify');
$user1 = $this->createMock(IUser::class);
$user1->method('getUID')
->willReturn('uid1');
$user2 = $this->createMock(IUser::class);
$user2->method('getUID')
->willReturn('uid2');
$user3 = $this->createMock(IUser::class);
$user3->method('getUID')
->willReturn('uid3');
$users = [$user1, $user2, $user3];
$this->provider->send($this->vcalendar->VEVENT, $this->calendarDisplayName, $users);
}
public function testSend(): void {
$this->config->expects($this->once())
->method('getAppValue')
->with('dav', 'sendEventRemindersPush', 'no')
->willReturn('yes');
$user1 = $this->createMock(IUser::class);
$user1->method('getUID')
->willReturn('uid1');

Loading…
Cancel
Save