Skip to content
Snippets Groups Projects
Commit 16cfca6a authored by Robin Appelman's avatar Robin Appelman
Browse files

Better reuse of cache data for getFolderContents

parent 4438c7de
No related branches found
No related tags found
No related merge requests found
...@@ -964,15 +964,20 @@ class View { ...@@ -964,15 +964,20 @@ class View {
$cache = $storage->getCache($internalPath); $cache = $storage->getCache($internalPath);
$user = \OC_User::getUser(); $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 = $storage->getScanner($internalPath);
$scanner->scan($internalPath, Cache\Scanner::SCAN_SHALLOW); $scanner->scan($internalPath, Cache\Scanner::SCAN_SHALLOW);
} else { $data = $cache->get($internalPath);
$watcher = $storage->getWatcher($internalPath); } else if ($watcher->checkUpdate($internalPath, $data)) {
$watcher->checkUpdate($internalPath); $data = $cache->get($internalPath);
} }
$folderId = $cache->getId($internalPath); $folderId = $data['fileid'];
/** /**
* @var \OC\Files\FileInfo[] $files * @var \OC\Files\FileInfo[] $files
*/ */
...@@ -1034,7 +1039,7 @@ class View { ...@@ -1034,7 +1039,7 @@ class View {
break; 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 sharing was disabled for the user we remove the share permissions
if (\OCP\Util::isSharingDisabledForUser()) { if (\OCP\Util::isSharingDisabledForUser()) {
......
...@@ -177,8 +177,9 @@ class View extends \PHPUnit_Framework_TestCase { ...@@ -177,8 +177,9 @@ class View extends \PHPUnit_Framework_TestCase {
function testCacheIncompleteFolder() { function testCacheIncompleteFolder() {
$storage1 = $this->getTestStorage(false); $storage1 = $this->getTestStorage(false);
\OC\Files\Filesystem::mount($storage1, array(), '/'); \OC\Files\Filesystem::clearMounts();
$rootView = new \OC\Files\View(''); \OC\Files\Filesystem::mount($storage1, array(), '/incomplete');
$rootView = new \OC\Files\View('/incomplete');
$entries = $rootView->getDirectoryContent('/'); $entries = $rootView->getDirectoryContent('/');
$this->assertEquals(3, count($entries)); $this->assertEquals(3, count($entries));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment