-
-
Notifications
You must be signed in to change notification settings - Fork 4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add activity logging for favorites in dav #48612
base: master
Are you sure you want to change the base?
Conversation
cde368c
to
e747f11
Compare
19fea9b
to
3a2b521
Compare
Signed-off-by: grnd-alt <[email protected]>
3a2b521
to
fbd6419
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would it not be cleaner and make more sense to emit just the event and handle the activity in an event listener?
Then only one place for the activity is required and one would not mix different apps (files app activity in dav app).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't get why this is need. Isn't TagService
already doing that?
server/apps/files/lib/Service/TagService.php
Lines 101 to 131 in ff9ea47
protected function addActivity($addToFavorite, $fileId, $path) { | |
$user = $this->userSession->getUser(); | |
if (!$user instanceof IUser) { | |
return; | |
} | |
if ($addToFavorite) { | |
$event = new NodeAddedToFavorite($user, $fileId, $path); | |
} else { | |
$event = new NodeRemovedFromFavorite($user, $fileId, $path); | |
} | |
$this->dispatcher->dispatchTyped($event); | |
$event = $this->activityManager->generateEvent(); | |
try { | |
$event->setApp('files') | |
->setObject('files', $fileId, $path) | |
->setType('favorite') | |
->setAuthor($user->getUID()) | |
->setAffectedUser($user->getUID()) | |
->setTimestamp(time()) | |
->setSubject( | |
$addToFavorite ? FavoriteProvider::SUBJECT_ADDED : FavoriteProvider::SUBJECT_REMOVED, | |
['id' => $fileId, 'path' => $path] | |
); | |
$this->activityManager->publish($event); | |
} catch (\InvalidArgumentException $e) { | |
} catch (\BadMethodCallException $e) { | |
} | |
} | |
} |
EDIT: reading the issue
apps/dav/lib/Server.php
Outdated
@@ -277,9 +280,11 @@ public function __construct(IRequest $request, string $baseUri) { | |||
$this->server->addPlugin( | |||
new QuotaPlugin($view)); | |||
} | |||
|
|||
// if (!$user instanceOf IUser ) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should this be removed?
if ((int)$favState === 1 || $favState === 'true') { | ||
$this->addActivity(true, $node->getId(), $path); | ||
$this->getTagger()->tagAs($node->getId(), self::TAG_FAVORITE); | ||
} else { | ||
$this->addActivity(false, $node->getId(), $path); | ||
$this->getTagger()->unTag($node->getId(), self::TAG_FAVORITE); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe use those methods instead:
Lines 481 to 497 in ff9ea47
public function addToFavorites($objid) { | |
if (!$this->userHasTag(ITags::TAG_FAVORITE, $this->user)) { | |
$this->add(ITags::TAG_FAVORITE); | |
} | |
return $this->tagAs($objid, ITags::TAG_FAVORITE); | |
} | |
/** | |
* Remove an object from favorites | |
* | |
* @param int $objid The id of the object | |
* @return boolean | |
*/ | |
public function removeFromFavorites($objid) { | |
return $this->unTag($objid, ITags::TAG_FAVORITE); | |
} | |
And then emit the event in those methods?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
addActivity
fromTagService
can be copied toTags
.- Then
TagService
can be deleted. - And then
server/apps/files/lib/Controller/ApiController.php
Lines 126 to 127 in ff9ea47
$this->tagService->updateFileTags($path, $tags); } catch (\OCP\Files\NotFoundException $e) {
23737a9
to
f277185
Compare
Signed-off-by: grnd-alt <[email protected]>
f277185
to
5aab95c
Compare
Summary
Dav api did not log favorite added/removed events.
Checklist