Merge pull request #39944 from nextcloud/share-cache-share

pass the share to the cache instead of having to ask the storage
This commit is contained in:
Robin Appelman 2023-08-28 13:44:03 +02:00 committed by GitHub
commit d4e67afed7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 5 deletions

View file

@ -41,6 +41,7 @@ use OCP\Files\Search\ISearchOperator;
use OCP\Files\StorageNotAvailableException;
use OCP\ICacheFactory;
use OCP\IUserManager;
use OCP\Share\IShare;
/**
* Metadata cache for shared files
@ -55,15 +56,22 @@ class Cache extends CacheJail {
private ?string $ownerDisplayName = null;
private $numericId;
private DisplayNameCache $displayNameCache;
private IShare $share;
/**
* @param SharedStorage $storage
*/
public function __construct($storage, ICacheEntry $sourceRootInfo, DisplayNameCache $displayNameCache) {
public function __construct(
$storage,
ICacheEntry $sourceRootInfo,
DisplayNameCache $displayNameCache,
IShare $share
) {
$this->storage = $storage;
$this->sourceRootInfo = $sourceRootInfo;
$this->numericId = $sourceRootInfo->getStorageId();
$this->displayNameCache = $displayNameCache;
$this->share = $share;
parent::__construct(
null,
@ -150,7 +158,7 @@ class Cache extends CacheJail {
try {
if (isset($entry['permissions'])) {
$entry['permissions'] &= $this->storage->getShare()->getPermissions();
$entry['permissions'] &= $this->share->getPermissions();
} else {
$entry['permissions'] = $this->storage->getPermissions($entry['path']);
}
@ -159,7 +167,7 @@ class Cache extends CacheJail {
// (IDE may say the exception is never thrown false negative)
$sharePermissions = 0;
}
$entry['uid_owner'] = $this->storage->getOwner('');
$entry['uid_owner'] = $this->share->getShareOwner();
$entry['displayname_owner'] = $this->getOwnerDisplayName();
if ($path === '') {
$entry['is_share_mount_point'] = true;
@ -169,7 +177,7 @@ class Cache extends CacheJail {
private function getOwnerDisplayName() {
if (!$this->ownerDisplayName) {
$uid = $this->storage->getOwner('');
$uid = $this->share->getShareOwner();
$this->ownerDisplayName = $this->displayNameCache->getDisplayName($uid) ?? $uid;
}
return $this->ownerDisplayName;

View file

@ -413,7 +413,8 @@ class SharedStorage extends \OC\Files\Storage\Wrapper\Jail implements ISharedSto
$this->cache = new \OCA\Files_Sharing\Cache(
$storage,
$sourceRoot,
\OC::$server->get(DisplayNameCache::class)
\OC::$server->get(DisplayNameCache::class),
$this->getShare()
);
return $this->cache;
}