Skip to content

Commit 8ebbd91

Browse files
Merge pull request #17148 from nextcloud/always-provide-color-to-default-personal-calendar
Always provide theme color for default personal calendar
2 parents 129214e + 8927205 commit 8ebbd91

File tree

2 files changed

+46
-6
lines changed

2 files changed

+46
-6
lines changed

apps/dav/lib/HookManager.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
use OCA\DAV\CalDAV\CalDavBackend;
3232
use OCA\DAV\CardDAV\CardDavBackend;
3333
use OCA\DAV\CardDAV\SyncService;
34+
use OCP\Defaults;
3435
use OCP\IUser;
3536
use OCP\IUserManager;
3637
use OCP\Util;
@@ -59,18 +60,23 @@ class HookManager {
5960
/** @var array */
6061
private $addressBooksToDelete = [];
6162

63+
/** @var Defaults */
64+
private $themingDefaults;
65+
6266
/** @var EventDispatcherInterface */
6367
private $eventDispatcher;
6468

6569
public function __construct(IUserManager $userManager,
6670
SyncService $syncService,
6771
CalDavBackend $calDav,
6872
CardDavBackend $cardDav,
73+
Defaults $themingDefaults,
6974
EventDispatcherInterface $eventDispatcher) {
7075
$this->userManager = $userManager;
7176
$this->syncService = $syncService;
7277
$this->calDav = $calDav;
7378
$this->cardDav = $cardDav;
79+
$this->themingDefaults = $themingDefaults;
7480
$this->eventDispatcher = $eventDispatcher;
7581
}
7682

@@ -156,6 +162,8 @@ public function firstLogin(IUser $user = null) {
156162
try {
157163
$this->calDav->createCalendar($principal, CalDavBackend::PERSONAL_CALENDAR_URI, [
158164
'{DAV:}displayname' => CalDavBackend::PERSONAL_CALENDAR_NAME,
165+
'{http://apple.com/ns/ical/}calendar-color' => $this->themingDefaults->getColorPrimary(),
166+
'components' => 'VEVENT'
159167
]);
160168
} catch (\Exception $ex) {
161169
\OC::$server->getLogger()->logException($ex);

apps/dav/tests/unit/DAV/HookManagerTest.php

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
use OCA\DAV\CardDAV\CardDavBackend;
3535
use OCA\DAV\CardDAV\SyncService;
3636
use OCA\DAV\HookManager;
37+
use OCP\Defaults;
3738
use OCP\IL10N;
3839
use OCP\IUser;
3940
use OCP\IUserManager;
@@ -75,14 +76,25 @@ public function test() {
7576
->disableOriginalConstructor()
7677
->getMock();
7778

79+
/** @var Defaults | \PHPUnit\Framework\MockObject\MockObject $syncService */
80+
$defaults = $this->getMockBuilder(Defaults::class)
81+
->disableOriginalConstructor()
82+
->getMock();
83+
84+
$defaults->expects($this->once())->method('getColorPrimary')->willReturn('#745bca');
85+
7886
/** @var CalDavBackend | \PHPUnit\Framework\MockObject\MockObject $cal */
7987
$cal = $this->getMockBuilder(CalDavBackend::class)
8088
->disableOriginalConstructor()
8189
->getMock();
8290
$cal->expects($this->once())->method('getCalendarsForUserCount')->willReturn(0);
8391
$cal->expects($this->once())->method('createCalendar')->with(
8492
'principals/users/newUser',
85-
'personal', ['{DAV:}displayname' => 'Personal']);
93+
'personal', [
94+
'{DAV:}displayname' => 'Personal',
95+
'{http://apple.com/ns/ical/}calendar-color' => '#745bca',
96+
'components' => 'VEVENT'
97+
]);
8698

8799
/** @var CardDavBackend | \PHPUnit\Framework\MockObject\MockObject $card */
88100
$card = $this->getMockBuilder(CardDavBackend::class)
@@ -93,7 +105,7 @@ public function test() {
93105
'principals/users/newUser',
94106
'contacts', ['{DAV:}displayname' => 'Contacts']);
95107

96-
$hm = new HookManager($userManager, $syncService, $cal, $card, $this->eventDispatcher);
108+
$hm = new HookManager($userManager, $syncService, $cal, $card, $defaults, $this->eventDispatcher);
97109
$hm->firstLogin($user);
98110
}
99111

@@ -113,6 +125,11 @@ public function testWithExisting() {
113125
->disableOriginalConstructor()
114126
->getMock();
115127

128+
/** @var Defaults | \PHPUnit\Framework\MockObject\MockObject $syncService */
129+
$defaults = $this->getMockBuilder(Defaults::class)
130+
->disableOriginalConstructor()
131+
->getMock();
132+
116133
/** @var CalDavBackend | \PHPUnit\Framework\MockObject\MockObject $cal */
117134
$cal = $this->getMockBuilder(CalDavBackend::class)
118135
->disableOriginalConstructor()
@@ -127,7 +144,7 @@ public function testWithExisting() {
127144
$card->expects($this->once())->method('getAddressBooksForUserCount')->willReturn(1);
128145
$card->expects($this->never())->method('createAddressBook');
129146

130-
$hm = new HookManager($userManager, $syncService, $cal, $card, $this->eventDispatcher);
147+
$hm = new HookManager($userManager, $syncService, $cal, $card, $defaults, $this->eventDispatcher);
131148
$hm->firstLogin($user);
132149
}
133150

@@ -147,14 +164,24 @@ public function testWithBirthdayCalendar() {
147164
->disableOriginalConstructor()
148165
->getMock();
149166

167+
/** @var Defaults | \PHPUnit\Framework\MockObject\MockObject $syncService */
168+
$defaults = $this->getMockBuilder(Defaults::class)
169+
->disableOriginalConstructor()
170+
->getMock();
171+
$defaults->expects($this->once())->method('getColorPrimary')->willReturn('#745bca');
172+
150173
/** @var CalDavBackend | \PHPUnit\Framework\MockObject\MockObject $cal */
151174
$cal = $this->getMockBuilder(CalDavBackend::class)
152175
->disableOriginalConstructor()
153176
->getMock();
154177
$cal->expects($this->once())->method('getCalendarsForUserCount')->willReturn(0);
155178
$cal->expects($this->once())->method('createCalendar')->with(
156179
'principals/users/newUser',
157-
'personal', ['{DAV:}displayname' => 'Personal']);
180+
'personal', [
181+
'{DAV:}displayname' => 'Personal',
182+
'{http://apple.com/ns/ical/}calendar-color' => '#745bca',
183+
'components' => 'VEVENT'
184+
]);
158185

159186
/** @var CardDavBackend | \PHPUnit\Framework\MockObject\MockObject $card */
160187
$card = $this->getMockBuilder(CardDavBackend::class)
@@ -165,7 +192,7 @@ public function testWithBirthdayCalendar() {
165192
'principals/users/newUser',
166193
'contacts', ['{DAV:}displayname' => 'Contacts']);
167194

168-
$hm = new HookManager($userManager, $syncService, $cal, $card, $this->eventDispatcher);
195+
$hm = new HookManager($userManager, $syncService, $cal, $card, $defaults, $this->eventDispatcher);
169196
$hm->firstLogin($user);
170197
}
171198

@@ -187,6 +214,11 @@ public function testDeleteCalendar() {
187214
$syncService->expects($this->once())
188215
->method('deleteUser');
189216

217+
/** @var Defaults | \PHPUnit\Framework\MockObject\MockObject $syncService */
218+
$defaults = $this->getMockBuilder(Defaults::class)
219+
->disableOriginalConstructor()
220+
->getMock();
221+
190222
/** @var CalDavBackend | \PHPUnit\Framework\MockObject\MockObject $cal */
191223
$cal = $this->getMockBuilder(CalDavBackend::class)
192224
->disableOriginalConstructor()
@@ -206,7 +238,7 @@ public function testDeleteCalendar() {
206238
]);
207239
$card->expects($this->once())->method('deleteAddressBook');
208240

209-
$hm = new HookManager($userManager, $syncService, $cal, $card, $this->eventDispatcher);
241+
$hm = new HookManager($userManager, $syncService, $cal, $card, $defaults, $this->eventDispatcher);
210242
$hm->preDeleteUser(['uid' => 'newUser']);
211243
$hm->postDeleteUser(['uid' => 'newUser']);
212244
}

0 commit comments

Comments
 (0)