Skip to content

Commit 681ee75

Browse files
Merge pull request #48734 from nextcloud/fix/45884/accept-notification
fix: get rid of denied notification when accept
2 parents de9f5c4 + 73b34bb commit 681ee75

File tree

4 files changed

+25
-12
lines changed

4 files changed

+25
-12
lines changed

.reuse/dep5

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ Files: vendor-bin/*/composer.json vendor-bin/*/composer.lock
163163
Copyright: 2021 Nextcloud GmbH and Nextcloud contributors
164164
License: AGPL-3.0-or-later
165165

166-
Files: apps/encryption/img/app.svg apps/federation/img/app.svg apps/files/img/add-color.png apps/files/img/add-color.svg apps/files/img/app-dark.svg apps/files/img/app.svg apps/files/img/change.png apps/files/img/change.svg apps/files/img/delete-color.png apps/files/img/delete-color.svg apps/files/img/folder.svg apps/files_external/img/app-dark.svg apps/files_external/img/app.svg apps/user_ldap/img/app-dark.svg apps/user_ldap/img/app.svg apps/comments/img/comments-dark.svg apps/comments/img/comments.svg apps/files_reminders/img/alarm.svg apps/files_reminders/img/app-dark.svg apps/files_reminders/img/app.svg apps/files_versions/img/app-dark.svg apps/files_versions/img/app.svg apps/files_trashbin/img/app-dark.svg apps/files_trashbin/img/app.svg apps/theming/img/accessibility-dark.svg apps/testing/img/app.svg apps/sharebymail/img/app.svg apps/systemtags/img/app.svg apps/provisioning_api/img/app.svg apps/settings/img/apps.svg apps/settings/img/change.svg apps/settings/img/help.svg apps/settings/img/password.svg apps/settings/img/personal.png apps/settings/img/personal.svg apps/settings/img/share.svg apps/settings/img/users-white.svg apps/settings/img/users.svg apps/files_sharing/img/app.svg apps/settings/img/admin.svg apps/settings/img/settings.svg apps/settings/img/settings_apps.svg apps/settings/img/toggle-filelist.svg apps/webhook_listeners/img/app-dark.svg apps/webhook_listeners/img/app.svg core/img/filetypes/application-pdf.svg core/img/breadcrumb.svg core/img/filetypes/application.svg core/img/filetypes/audio.svg core/img/filetypes/file.svg core/img/filetypes/folder-drag-accept.svg core/img/filetypes/folder-encrypted.svg core/img/filetypes/folder-external.svg core/img/filetypes/folder-public.svg core/img/filetypes/folder-shared.svg core/img/filetypes/folder-starred.svg core/img/filetypes/folder.svg core/img/filetypes/image.svg core/img/filetypes/link.svg core/img/filetypes/location.svg core/img/filetypes/mindmap.svg core/img/filetypes/text-calendar.svg core/img/filetypes/text-code.svg core/img/filetypes/text-vcard.svg core/img/filetypes/text.svg core/img/filetypes/video.svg core/img/filetypes/x-office-document.svg core/img/filetypes/x-office-drawing.svg core/img/filetypes/x-office-form-template.svg core/img/filetypes/x-office-form.svg core/img/filetypes/x-office-presentation.svg core/img/filetypes/x-office-spreadsheet.svg core/img/places/calendar-dark.png core/img/places/calendar.png core/img/places/calendar.svg core/img/places/contacts-dark.png core/img/places/contacts.svg core/img/places/default-app-icon.svg core/img/places/files.svg core/img/places/home.svg core/img/places/link.svg core/img/places/music.svg core/img/places/picture.svg core/img/rating/s0.svg core/img/rating/s1.svg core/img/rating/s10.svg core/img/rating/s2.svg core/img/rating/s3.svg core/img/rating/s4.svg core/img/rating/s5.svg core/img/rating/s6.svg core/img/rating/s7.svg core/img/rating/s8.svg core/img/rating/s9.svg core/img/mail.svg core/img/rss.svg core/img/clients/desktop.svg core/img/clients/phone.svg core/img/clients/tablet.svg core/img/categories/auth.svg core/img/categories/bundles.svg core/img/categories/customization.svg core/img/categories/files.svg core/img/categories/games.svg core/img/categories/integration.svg core/img/categories/monitoring.svg core/img/categories/multimedia.svg core/img/categories/office.svg core/img/categories/organization.svg core/img/categories/social.svg core/img/categories/workflow.svg core/img/apps/circles.svg core/img/apps/notes.svg core/img/apps/richdocuments.svg core/img/caldav/attendees.png core/img/caldav/attendees.svg core/img/caldav/description.png core/img/caldav/description.svg core/img/caldav/link.png core/img/caldav/link.svg core/img/caldav/location.png core/img/caldav/location.svg core/img/caldav/organizer.png core/img/caldav/organizer.svg core/img/caldav/time.png core/img/caldav/time.svg core/img/caldav/title.png core/img/caldav/title.svg core/img/actions/add-folder-description.svg core/img/actions/add.svg core/img/actions/address.png core/img/actions/address.svg core/img/actions/alert-outline.svg core/img/actions/arrow-left.svg core/img/actions/arrow-right.svg core/img/actions/audio-off.svg core/img/actions/audio.svg core/img/actions/caret-white.svg core/img/actions/caret.svg core/img/actions/change.svg core/img/actions/clippy.svg core/img/actions/close.svg core/img/actions/comment.png core/img/actions/comment.svg core/img/actions/confirm-fade.svg core/img/actions/confirm-white.svg core/img/actions/confirm.svg core/img/actions/delete.png core/img/actions/delete.svg core/img/actions/details.svg core/img/actions/disabled-user.svg core/img/actions/disabled-users.svg core/img/actions/download.png core/img/actions/download.svg core/img/actions/edit.svg core/img/actions/error-white.svg core/img/actions/error.svg core/img/actions/external.svg core/img/actions/filter.svg core/img/actions/fullscreen.svg core/img/actions/group.svg core/img/actions/history.png core/img/actions/history.svg core/img/actions/info-white.svg core/img/actions/info.png core/img/actions/info.svg core/img/actions/logout.svg core/img/actions/mail.svg core/img/actions/menu-sidebar.svg core/img/actions/menu.svg core/img/actions/more-white.svg core/img/actions/more.png core/img/actions/more.svg core/img/actions/password-white.svg core/img/actions/password.png core/img/actions/password.svg core/img/actions/pause.svg core/img/actions/phone.svg core/img/actions/play-add.svg core/img/actions/play-next.svg core/img/actions/play-previous.svg core/img/actions/play.svg core/img/actions/profile.svg core/img/actions/projects.svg core/img/actions/public-white.svg core/img/actions/public.svg core/img/actions/quota.svg core/img/actions/recent.svg core/img/actions/rename.svg core/img/actions/screen-off.svg core/img/actions/screen.svg core/img/actions/search.svg core/img/actions/settings-dark.svg core/img/actions/settings.svg core/img/actions/share.png core/img/actions/share.svg core/img/actions/shared.svg core/img/actions/sound-off.svg core/img/actions/sound.svg core/img/actions/star-dark.svg core/img/actions/star.png core/img/actions/star.svg core/img/actions/starred.png core/img/actions/starred.svg core/img/actions/tag.png core/img/actions/tag.svg core/img/actions/template-add.svg core/img/actions/timezone.svg core/img/actions/toggle-background.svg core/img/actions/toggle-filelist.svg core/img/actions/toggle-pictures.svg core/img/actions/toggle.svg core/img/actions/triangle-e.svg core/img/actions/triangle-n.svg core/img/actions/triangle-s.svg core/img/actions/unshare.svg core/img/actions/upload.svg core/img/actions/user-admin.svg core/img/actions/user.svg core/img/actions/verified.svg core/img/actions/verify.svg core/img/actions/verifying.svg core/img/actions/video-off.svg core/img/actions/video-switch.svg core/img/actions/video.svg core/img/actions/view-close.svg core/img/actions/view-download.svg core/img/actions/view-next.svg core/img/actions/view-pause.svg core/img/actions/view-play.svg core/img/actions/view-previous.svg core/img/places/contacts-dark.png core/img/places/contacts.svg apps/user_status/img/app-dark.svg apps/user_status/img/app.svg apps/theming/img/app-dark.svg apps/theming/img/app.svg apps/updatenotification/img/app.svg apps/weather_status/img/app-dark.svg apps/weather_status/img/app.svg apps/updatenotification/img/notification.svg
166+
Files: apps/encryption/img/app.svg apps/federation/img/app.svg apps/files/img/add-color.png apps/files/img/add-color.svg apps/files/img/app-dark.svg apps/files/img/app.svg apps/files/img/change.png apps/files/img/change.svg apps/files/img/delete-color.png apps/files/img/delete-color.svg apps/files/img/folder.svg apps/files/img/folder-move.svg apps/files_external/img/app-dark.svg apps/files_external/img/app.svg apps/user_ldap/img/app-dark.svg apps/user_ldap/img/app.svg apps/comments/img/comments-dark.svg apps/comments/img/comments.svg apps/files_reminders/img/alarm.svg apps/files_reminders/img/app-dark.svg apps/files_reminders/img/app.svg apps/files_versions/img/app-dark.svg apps/files_versions/img/app.svg apps/files_trashbin/img/app-dark.svg apps/files_trashbin/img/app.svg apps/theming/img/accessibility-dark.svg apps/testing/img/app.svg apps/sharebymail/img/app.svg apps/systemtags/img/app.svg apps/provisioning_api/img/app.svg apps/settings/img/apps.svg apps/settings/img/change.svg apps/settings/img/help.svg apps/settings/img/password.svg apps/settings/img/personal.png apps/settings/img/personal.svg apps/settings/img/share.svg apps/settings/img/users-white.svg apps/settings/img/users.svg apps/files_sharing/img/app.svg apps/settings/img/admin.svg apps/settings/img/settings.svg apps/settings/img/settings_apps.svg apps/settings/img/toggle-filelist.svg apps/webhook_listeners/img/app-dark.svg apps/webhook_listeners/img/app.svg core/img/filetypes/application-pdf.svg core/img/breadcrumb.svg core/img/filetypes/application.svg core/img/filetypes/audio.svg core/img/filetypes/file.svg core/img/filetypes/folder-drag-accept.svg core/img/filetypes/folder-encrypted.svg core/img/filetypes/folder-external.svg core/img/filetypes/folder-public.svg core/img/filetypes/folder-shared.svg core/img/filetypes/folder-starred.svg core/img/filetypes/folder.svg core/img/filetypes/image.svg core/img/filetypes/link.svg core/img/filetypes/location.svg core/img/filetypes/mindmap.svg core/img/filetypes/text-calendar.svg core/img/filetypes/text-code.svg core/img/filetypes/text-vcard.svg core/img/filetypes/text.svg core/img/filetypes/video.svg core/img/filetypes/x-office-document.svg core/img/filetypes/x-office-drawing.svg core/img/filetypes/x-office-form-template.svg core/img/filetypes/x-office-form.svg core/img/filetypes/x-office-presentation.svg core/img/filetypes/x-office-spreadsheet.svg core/img/places/calendar-dark.png core/img/places/calendar.png core/img/places/calendar.svg core/img/places/contacts-dark.png core/img/places/contacts.svg core/img/places/default-app-icon.svg core/img/places/files.svg core/img/places/home.svg core/img/places/link.svg core/img/places/music.svg core/img/places/picture.svg core/img/rating/s0.svg core/img/rating/s1.svg core/img/rating/s10.svg core/img/rating/s2.svg core/img/rating/s3.svg core/img/rating/s4.svg core/img/rating/s5.svg core/img/rating/s6.svg core/img/rating/s7.svg core/img/rating/s8.svg core/img/rating/s9.svg core/img/mail.svg core/img/rss.svg core/img/clients/desktop.svg core/img/clients/phone.svg core/img/clients/tablet.svg core/img/categories/auth.svg core/img/categories/bundles.svg core/img/categories/customization.svg core/img/categories/files.svg core/img/categories/games.svg core/img/categories/integration.svg core/img/categories/monitoring.svg core/img/categories/multimedia.svg core/img/categories/office.svg core/img/categories/organization.svg core/img/categories/social.svg core/img/categories/workflow.svg core/img/apps/circles.svg core/img/apps/notes.svg core/img/apps/richdocuments.svg core/img/caldav/attendees.png core/img/caldav/attendees.svg core/img/caldav/description.png core/img/caldav/description.svg core/img/caldav/link.png core/img/caldav/link.svg core/img/caldav/location.png core/img/caldav/location.svg core/img/caldav/organizer.png core/img/caldav/organizer.svg core/img/caldav/time.png core/img/caldav/time.svg core/img/caldav/title.png core/img/caldav/title.svg core/img/actions/add-folder-description.svg core/img/actions/add.svg core/img/actions/address.png core/img/actions/address.svg core/img/actions/alert-outline.svg core/img/actions/arrow-left.svg core/img/actions/arrow-right.svg core/img/actions/audio-off.svg core/img/actions/audio.svg core/img/actions/caret-white.svg core/img/actions/caret.svg core/img/actions/change.svg core/img/actions/clippy.svg core/img/actions/close.svg core/img/actions/comment.png core/img/actions/comment.svg core/img/actions/confirm-fade.svg core/img/actions/confirm-white.svg core/img/actions/confirm.svg core/img/actions/delete.png core/img/actions/delete.svg core/img/actions/details.svg core/img/actions/disabled-user.svg core/img/actions/disabled-users.svg core/img/actions/download.png core/img/actions/download.svg core/img/actions/edit.svg core/img/actions/error-white.svg core/img/actions/error.svg core/img/actions/external.svg core/img/actions/filter.svg core/img/actions/fullscreen.svg core/img/actions/group.svg core/img/actions/history.png core/img/actions/history.svg core/img/actions/info-white.svg core/img/actions/info.png core/img/actions/info.svg core/img/actions/logout.svg core/img/actions/mail.svg core/img/actions/menu-sidebar.svg core/img/actions/menu.svg core/img/actions/more-white.svg core/img/actions/more.png core/img/actions/more.svg core/img/actions/password-white.svg core/img/actions/password.png core/img/actions/password.svg core/img/actions/pause.svg core/img/actions/phone.svg core/img/actions/play-add.svg core/img/actions/play-next.svg core/img/actions/play-previous.svg core/img/actions/play.svg core/img/actions/profile.svg core/img/actions/projects.svg core/img/actions/public-white.svg core/img/actions/public.svg core/img/actions/quota.svg core/img/actions/recent.svg core/img/actions/rename.svg core/img/actions/screen-off.svg core/img/actions/screen.svg core/img/actions/search.svg core/img/actions/settings-dark.svg core/img/actions/settings.svg core/img/actions/share.png core/img/actions/share.svg core/img/actions/shared.svg core/img/actions/sound-off.svg core/img/actions/sound.svg core/img/actions/star-dark.svg core/img/actions/star.png core/img/actions/star.svg core/img/actions/starred.png core/img/actions/starred.svg core/img/actions/tag.png core/img/actions/tag.svg core/img/actions/template-add.svg core/img/actions/timezone.svg core/img/actions/toggle-background.svg core/img/actions/toggle-filelist.svg core/img/actions/toggle-pictures.svg core/img/actions/toggle.svg core/img/actions/triangle-e.svg core/img/actions/triangle-n.svg core/img/actions/triangle-s.svg core/img/actions/unshare.svg core/img/actions/upload.svg core/img/actions/user-admin.svg core/img/actions/user.svg core/img/actions/verified.svg core/img/actions/verify.svg core/img/actions/verifying.svg core/img/actions/video-off.svg core/img/actions/video-switch.svg core/img/actions/video.svg core/img/actions/view-close.svg core/img/actions/view-download.svg core/img/actions/view-next.svg core/img/actions/view-pause.svg core/img/actions/view-play.svg core/img/actions/view-previous.svg core/img/places/contacts-dark.png core/img/places/contacts.svg apps/user_status/img/app-dark.svg apps/user_status/img/app.svg apps/theming/img/app-dark.svg apps/theming/img/app.svg apps/updatenotification/img/app.svg apps/weather_status/img/app-dark.svg apps/weather_status/img/app.svg apps/updatenotification/img/notification.svg
167167
Copyright: 2018-2024 Google LLC
168168
License: Apache-2.0
169169

apps/files/img/folder-move.svg

Lines changed: 1 addition & 0 deletions
Loading

apps/files/lib/Controller/TransferOwnershipController.php

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -140,22 +140,15 @@ public function accept(int $id): DataResponse {
140140
return new DataResponse([], Http::STATUS_FORBIDDEN);
141141
}
142142

143+
$this->jobList->add(TransferOwnership::class, [
144+
'id' => $transferOwnership->getId(),
145+
]);
146+
143147
$notification = $this->notificationManager->createNotification();
144148
$notification->setApp('files')
145149
->setObject('transfer', (string)$id);
146150
$this->notificationManager->markProcessed($notification);
147151

148-
$newTransferOwnership = new TransferOwnershipEntity();
149-
$newTransferOwnership->setNodeName($transferOwnership->getNodeName());
150-
$newTransferOwnership->setFileId($transferOwnership->getFileId());
151-
$newTransferOwnership->setSourceUser($transferOwnership->getSourceUser());
152-
$newTransferOwnership->setTargetUser($transferOwnership->getTargetUser());
153-
$this->mapper->insert($newTransferOwnership);
154-
155-
$this->jobList->add(TransferOwnership::class, [
156-
'id' => $newTransferOwnership->getId(),
157-
]);
158-
159152
return new DataResponse([], Http::STATUS_OK);
160153
}
161154

apps/files/lib/Notification/Notifier.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@
88
*/
99
namespace OCA\Files\Notification;
1010

11+
use OCA\Files\BackgroundJob\TransferOwnership;
1112
use OCA\Files\Db\TransferOwnershipMapper;
1213
use OCP\AppFramework\Db\DoesNotExistException;
1314
use OCP\AppFramework\Utility\ITimeFactory;
15+
use OCP\BackgroundJob\IJobList;
1416
use OCP\IURLGenerator;
1517
use OCP\IUser;
1618
use OCP\IUserManager;
@@ -36,15 +38,19 @@ class Notifier implements INotifier, IDismissableNotifier {
3638
private $userManager;
3739
/** @var ITimeFactory */
3840
private $timeFactory;
41+
/** @var IJobList */
42+
private $jobList;
3943

4044
public function __construct(IFactory $l10nFactory,
4145
IURLGenerator $urlGenerator,
4246
TransferOwnershipMapper $mapper,
4347
IManager $notificationManager,
4448
IUserManager $userManager,
49+
IJobList $jobList,
4550
ITimeFactory $timeFactory) {
4651
$this->l10nFactory = $l10nFactory;
4752
$this->urlGenerator = $urlGenerator;
53+
$this->jobList = $jobList;
4854
$this->mapper = $mapper;
4955
$this->notificationManager = $notificationManager;
5056
$this->userManager = $userManager;
@@ -70,6 +76,10 @@ public function prepare(INotification $notification, string $languageCode): INot
7076
throw new UnknownNotificationException('Unhandled app');
7177
}
7278

79+
$imagePath = $this->urlGenerator->imagePath('files', 'folder-move.svg');
80+
$iconUrl = $this->urlGenerator->getAbsoluteURL($imagePath);
81+
$notification->setIcon($iconUrl);
82+
7383
return match($notification->getSubject()) {
7484
'transferownershipRequest' => $this->handleTransferownershipRequest($notification, $languageCode),
7585
'transferownershipRequestDenied' => $this->handleTransferOwnershipRequestDenied($notification, $languageCode),
@@ -259,6 +269,9 @@ public function dismissNotification(INotification $notification): void {
259269
if ($notification->getApp() !== 'files') {
260270
throw new UnknownNotificationException('Unhandled app');
261271
}
272+
if ($notification->getSubject() !== 'transferownershipRequest') {
273+
throw new UnknownNotificationException('Unhandled notification type');
274+
}
262275

263276
// TODO: This should all be moved to a service that also the transferownershipController uses.
264277
try {
@@ -267,6 +280,12 @@ public function dismissNotification(INotification $notification): void {
267280
return;
268281
}
269282

283+
if ($this->jobList->has(TransferOwnership::class, [
284+
'id' => $transferOwnership->getId(),
285+
])) {
286+
return;
287+
}
288+
270289
$notification = $this->notificationManager->createNotification();
271290
$notification->setUser($transferOwnership->getSourceUser())
272291
->setApp('files')

0 commit comments

Comments
 (0)