Skip to content

Commit b011d1c

Browse files
Merge pull request #1196 from nextcloud/bugfix/1183/allow-to-reshare-files-into-chat
Allow to reshare files again
2 parents e1773cd + 338c5c4 commit b011d1c

File tree

3 files changed

+17
-2
lines changed

3 files changed

+17
-2
lines changed

js/views/chatview.js

+3
Original file line numberDiff line numberDiff line change
@@ -765,6 +765,9 @@
765765

766766
var result = xhr.responseJSON;
767767
if (result && result.ocs && result.ocs.meta) {
768+
if (result.ocs.meta.statuscode === 403) {
769+
return;
770+
}
768771
message = result.ocs.meta.message;
769772
}
770773

lib/Chat/SystemMessage/Listener.php

+5-2
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
use OCA\Spreed\Manager;
2727
use OCA\Spreed\Participant;
2828
use OCA\Spreed\Room;
29+
use OCA\Spreed\Share\RoomShareProvider;
2930
use OCA\Spreed\TalkSession;
3031
use OCP\IUser;
3132
use OCP\IUserSession;
@@ -135,7 +136,7 @@ public function register() {
135136
$this->sendSystemMessage($room, 'moderator_demoted', ['user' => $event->getArgument('user')]);
136137
}
137138
});
138-
$this->dispatcher->addListener('OCP\Share::postShare', function(GenericEvent $event) {
139+
$listener = function(GenericEvent $event) {
139140
/** @var IShare $share */
140141
$share = $event->getSubject();
141142

@@ -145,7 +146,9 @@ public function register() {
145146

146147
$room = $this->roomManager->getRoomByToken($share->getSharedWith());
147148
$this->sendSystemMessage($room, 'file_shared', ['share' => $share->getId()]);
148-
});
149+
};
150+
$this->dispatcher->addListener('OCP\Share::postShare', $listener);
151+
$this->dispatcher->addListener(RoomShareProvider::class . '::' . 'share_file_again', $listener);
149152
}
150153

151154
protected function sendSystemMessage(Room $room, string $message, array $parameters = []) {

lib/Share/RoomShareProvider.php

+9
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@
4545
use OCP\Share\IManager as IShareManager;
4646
use OCP\Share\IShare;
4747
use OCP\Share\IShareProvider;
48+
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
49+
use Symfony\Component\EventDispatcher\GenericEvent;
4850

4951
/**
5052
* Share provider for room shares.
@@ -76,6 +78,9 @@ class RoomShareProvider implements IShareProvider {
7678
/** @var IRootFolder */
7779
private $rootFolder;
7880

81+
/** @var EventDispatcherInterface */
82+
private $dispatcher;
83+
7984
/** @var IL10N */
8085
private $l;
8186

@@ -90,6 +95,7 @@ class RoomShareProvider implements IShareProvider {
9095
* @param IUserManager $userManager
9196
* @param IShareManager $shareManager
9297
* @param IRootFolder $rootFolder
98+
* @param EventDispatcherInterface $dispatcher
9399
* @param IL10N $l10n
94100
* @param Manager $manager
95101
*/
@@ -99,6 +105,7 @@ public function __construct(
99105
IUserManager $userManager,
100106
IShareManager $shareManager,
101107
IRootFolder $rootFolder,
108+
EventDispatcherInterface $dispatcher,
102109
IL10N $l,
103110
Manager $manager
104111
) {
@@ -107,6 +114,7 @@ public function __construct(
107114
$this->userManager = $userManager;
108115
$this->shareManager = $shareManager;
109116
$this->rootFolder = $rootFolder;
117+
$this->dispatcher = $dispatcher;
110118
$this->l = $l;
111119
$this->manager = $manager;
112120
}
@@ -145,6 +153,7 @@ public function create(IShare $share) {
145153
$existingShares = $this->getSharesByPath($share->getNode());
146154
foreach ($existingShares as $existingShare) {
147155
if ($existingShare->getSharedWith() === $share->getSharedWith()) {
156+
$this->dispatcher->dispatch(self::class . '::' . 'share_file_again', new GenericEvent($existingShare));
148157
throw new GenericShareException("Already shared", $this->l->t('Path is already shared with this room'), 403);
149158
}
150159
}

0 commit comments

Comments
 (0)