Better reuse of cache data for getFolderContents
This commit is contained in:
parent
4438c7de1d
commit
16cfca6a5f
|
@ -964,15 +964,20 @@ class View {
|
|||
$cache = $storage->getCache($internalPath);
|
||||
$user = \OC_User::getUser();
|
||||
|
||||
if ($cache->getStatus($internalPath) < Cache\Cache::COMPLETE) {
|
||||
$data = $cache->get($internalPath);
|
||||
$watcher = $storage->getWatcher($internalPath);
|
||||
if (!$data or $data['size'] === -1) {
|
||||
if (!$storage->file_exists($internalPath)) {
|
||||
return array();
|
||||
}
|
||||
$scanner = $storage->getScanner($internalPath);
|
||||
$scanner->scan($internalPath, Cache\Scanner::SCAN_SHALLOW);
|
||||
} else {
|
||||
$watcher = $storage->getWatcher($internalPath);
|
||||
$watcher->checkUpdate($internalPath);
|
||||
$data = $cache->get($internalPath);
|
||||
} else if ($watcher->checkUpdate($internalPath, $data)) {
|
||||
$data = $cache->get($internalPath);
|
||||
}
|
||||
|
||||
$folderId = $cache->getId($internalPath);
|
||||
$folderId = $data['fileid'];
|
||||
/**
|
||||
* @var \OC\Files\FileInfo[] $files
|
||||
*/
|
||||
|
@ -1034,7 +1039,7 @@ class View {
|
|||
break;
|
||||
}
|
||||
}
|
||||
$rootEntry['path'] = substr($path . '/' . $rootEntry['name'], strlen($user) + 2); // full path without /$user/
|
||||
$rootEntry['path'] = substr(Filesystem::normalizePath($path . '/' . $rootEntry['name']), strlen($user) + 2); // full path without /$user/
|
||||
|
||||
// if sharing was disabled for the user we remove the share permissions
|
||||
if (\OCP\Util::isSharingDisabledForUser()) {
|
||||
|
|
|
@ -177,8 +177,9 @@ class View extends \PHPUnit_Framework_TestCase {
|
|||
|
||||
function testCacheIncompleteFolder() {
|
||||
$storage1 = $this->getTestStorage(false);
|
||||
\OC\Files\Filesystem::mount($storage1, array(), '/');
|
||||
$rootView = new \OC\Files\View('');
|
||||
\OC\Files\Filesystem::clearMounts();
|
||||
\OC\Files\Filesystem::mount($storage1, array(), '/incomplete');
|
||||
$rootView = new \OC\Files\View('/incomplete');
|
||||
|
||||
$entries = $rootView->getDirectoryContent('/');
|
||||
$this->assertEquals(3, count($entries));
|
||||
|
|
Loading…
Reference in New Issue