fix: Transfer incomming shares first, do not delete non-migratable ones

Canceling the previous add of deletion of invalid shares in
 transferownership because in some cases it deletes valid reshares, if
 incoming shares are not transfered on purpose.
Inverting the order of transfer between incoming and outgoing so that
 reshare can be migrated when incoming shares are transfered.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
pull/49629/head
Côme Chilliet 2024-08-26 11:31:39 +07:00
parent 16decdede7
commit f0e10eaeed
No known key found for this signature in database
GPG Key ID: A3E2F658B28C760A
1 changed files with 10 additions and 13 deletions

@ -150,16 +150,6 @@ class OwnershipTransferService {
$output
);
$destinationPath = $finalTarget . '/' . $path;
// restore the shares
$this->restoreShares(
$sourceUid,
$destinationUid,
$destinationPath,
$shares,
$output
);
// transfer the incoming shares
if ($transferIncomingShares === true) {
$sourceShares = $this->collectIncomingShares(
@ -184,6 +174,16 @@ class OwnershipTransferService {
$move
);
}
$destinationPath = $finalTarget . '/' . $path;
// restore the shares
$this->restoreShares(
$sourceUid,
$destinationUid,
$destinationPath,
$shares,
$output
);
}
private function sanitizeFolderName(string $name): string {
@ -469,9 +469,6 @@ class OwnershipTransferService {
}
} catch (\OCP\Files\NotFoundException $e) {
$output->writeln('<error>Share with id ' . $share->getId() . ' points at deleted file, skipping</error>');
} catch (\OCP\Share\Exceptions\GenericShareException $e) {
$output->writeln('<error>Share with id ' . $share->getId() . ' is broken, deleting</error>');
$this->shareManager->deleteShare($share);
} catch (\Throwable $e) {
$output->writeln('<error>Could not restore share with id ' . $share->getId() . ':' . $e->getMessage() . ' : ' . $e->getTraceAsString() . '</error>');
}