Skip to content

Commit eaaefda

Browse files
committed
fix: don't trigger on-setup share update from inside the share listener
Signed-off-by: Robin Appelman <robin@icewind.nl>
1 parent 736c93b commit eaaefda

File tree

3 files changed

+16
-0
lines changed

3 files changed

+16
-0
lines changed

apps/files_sharing/lib/Listener/SharesUpdatedListener.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,15 @@ public function __construct(
5454
private readonly ClockInterface $clock,
5555
private readonly LoggerInterface $logger,
5656
IAppConfig $appConfig,
57+
private readonly UserHomeSetupListener $homeSetupListener,
5758
) {
5859
$this->cutOffMarkTime = $appConfig->getValueFloat(Application::APP_ID, ConfigLexicon::UPDATE_CUTOFF_TIME, 3.0);
5960
}
6061

6162
public function handle(Event $event): void {
63+
// don't trigger the on-setup checks if this handler triggers an fs setup
64+
$this->homeSetupListener->setDisabled(true);
65+
6266
if ($event instanceof UserShareAccessUpdatedEvent) {
6367
foreach ($event->getUsers() as $user) {
6468
$this->updateOrMarkUser($user);
@@ -106,6 +110,8 @@ public function handle(Event $event): void {
106110
});
107111
}
108112
}
113+
114+
$this->homeSetupListener->setDisabled(false);
109115
}
110116

111117
private function markOrRun(IUser $user, callable $callback): void {

apps/files_sharing/lib/Listener/UserHomeSetupListener.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,23 @@
2323
* @template-implements IEventListener<UserHomeSetupEvent>
2424
*/
2525
class UserHomeSetupListener implements IEventListener {
26+
private bool $disabled = false;
2627
public function __construct(
2728
private readonly ShareRecipientUpdater $updater,
2829
private readonly IUserConfig $userConfig,
2930
) {
3031
}
3132

33+
public function setDisabled(bool $disabled): void {
34+
$this->disabled = $disabled;
35+
}
3236
public function handle(Event $event): void {
3337
if (!$event instanceof UserHomeSetupEvent) {
3438
return;
3539
}
40+
if ($this->disabled) {
41+
return;
42+
}
3643

3744
$user = $event->getUser();
3845
if ($this->userConfig->getValueBool($user->getUID(), Application::APP_ID, ConfigLexicon::USER_NEEDS_SHARE_REFRESH, true)) {

apps/files_sharing/tests/SharesUpdatedListenerTest.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use OCA\Files_Sharing\Config\ConfigLexicon;
1111
use OCA\Files_Sharing\Event\UserShareAccessUpdatedEvent;
1212
use OCA\Files_Sharing\Listener\SharesUpdatedListener;
13+
use OCA\Files_Sharing\Listener\UserHomeSetupListener;
1314
use OCA\Files_Sharing\ShareRecipientUpdater;
1415
use OCP\Config\IUserConfig;
1516
use OCP\IAppConfig;
@@ -57,6 +58,7 @@ protected function setUp(): void {
5758
return ($this->clockFn)();
5859
});
5960
$this->logger = $this->createMock(LoggerInterface::class);
61+
$homeSetupListener = new UserHomeSetupListener($this->shareRecipientUpdater, $this->userConfig);
6062

6163
$this->sharesUpdatedListener = new SharesUpdatedListener(
6264
$this->manager,
@@ -65,6 +67,7 @@ protected function setUp(): void {
6567
$this->clock,
6668
$this->logger,
6769
$this->appConfig,
70+
$homeSetupListener,
6871
);
6972
}
7073

0 commit comments

Comments
 (0)