Skip to content

Commit 3af6d11

Browse files
committed
Add events for favorites
Signed-off-by: Joas Schilling <[email protected]>
1 parent da030b6 commit 3af6d11

File tree

3 files changed

+25
-4
lines changed

3 files changed

+25
-4
lines changed

apps/files/lib/AppInfo/Application.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,13 +81,14 @@ public function __construct(array $urlParams=array()) {
8181
$container->registerService('Tagger', function(IContainer $c) {
8282
return $c->query('ServerContainer')->getTagManager()->load('files');
8383
});
84-
$container->registerService('TagService', function(IContainer $c) {
84+
$container->registerService('TagService', function(IContainer $c) use ($server) {
8585
$homeFolder = $c->query('ServerContainer')->getUserFolder();
8686
return new TagService(
8787
$c->query('ServerContainer')->getUserSession(),
8888
$c->query('ServerContainer')->getActivityManager(),
8989
$c->query('Tagger'),
90-
$homeFolder
90+
$homeFolder,
91+
$server->getEventDispatcher()
9192
);
9293
});
9394

apps/files/lib/Service/TagService.php

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
use OCP\ITags;
3232
use OCP\IUser;
3333
use OCP\IUserSession;
34+
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
35+
use Symfony\Component\EventDispatcher\GenericEvent;
3436

3537
/**
3638
* Service class to manage tags on files.
@@ -45,23 +47,28 @@ class TagService {
4547
private $tagger;
4648
/** @var Folder */
4749
private $homeFolder;
50+
/** @var EventDispatcherInterface */
51+
private $dispatcher;
4852

4953
/**
5054
* @param IUserSession $userSession
5155
* @param IManager $activityManager
5256
* @param ITags $tagger
5357
* @param Folder $homeFolder
58+
* @param EventDispatcherInterface $dispatcher
5459
*/
5560
public function __construct(
5661
IUserSession $userSession,
5762
IManager $activityManager,
5863
ITags $tagger,
59-
Folder $homeFolder
64+
Folder $homeFolder,
65+
EventDispatcherInterface $dispatcher
6066
) {
6167
$this->userSession = $userSession;
6268
$this->activityManager = $activityManager;
6369
$this->tagger = $tagger;
6470
$this->homeFolder = $homeFolder;
71+
$this->dispatcher = $dispatcher;
6572
}
6673

6774
/**
@@ -114,6 +121,13 @@ protected function addActivity($addToFavorite, $fileId, $path) {
114121
return;
115122
}
116123

124+
$eventName = $addToFavorite ? 'addFavorite' : 'removeFavorite';
125+
$this->dispatcher->dispatch(self::class . '::' . $eventName, new GenericEvent(null, [
126+
'userId' => $user->getUID(),
127+
'fileId' => $fileId,
128+
'path' => $path,
129+
]));
130+
117131
$event = $this->activityManager->generateEvent();
118132
try {
119133
$event->setApp('files')

apps/files/tests/Service/TagServiceTest.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
use OCA\Files\Service\TagService;
2929
use OCP\Activity\IManager;
3030
use OCP\IUserSession;
31+
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
3132

3233
/**
3334
* Class TagServiceTest
@@ -54,6 +55,9 @@ class TagServiceTest extends \Test\TestCase {
5455
*/
5556
private $root;
5657

58+
/** @var EventDispatcherInterface|\PHPUnit_Framework_MockObject_MockObject */
59+
private $dispatcher;
60+
5761
/**
5862
* @var \OCA\Files\Service\TagService|\PHPUnit_Framework_MockObject_MockObject
5963
*/
@@ -66,7 +70,7 @@ class TagServiceTest extends \Test\TestCase {
6670

6771
protected function setUp() {
6872
parent::setUp();
69-
$this->user = $this->getUniqueID('user');
73+
$this->user = static::getUniqueID('user');
7074
$this->activityManager = $this->createMock(IManager::class);
7175
\OC::$server->getUserManager()->createUser($this->user, 'test');
7276
\OC_User::setUserId($this->user);
@@ -83,6 +87,7 @@ protected function setUp() {
8387
->will($this->returnValue($user));
8488

8589
$this->root = \OC::$server->getUserFolder();
90+
$this->dispatcher = $this->createMock(EventDispatcherInterface::class);
8691

8792
$this->tagger = \OC::$server->getTagManager()->load('files');
8893
$this->tagService = $this->getTagService(['addActivity']);
@@ -99,6 +104,7 @@ protected function getTagService(array $methods = []) {
99104
$this->activityManager,
100105
$this->tagger,
101106
$this->root,
107+
$this->dispatcher,
102108
])
103109
->setMethods($methods)
104110
->getMock();

0 commit comments

Comments
 (0)