diff options
author | John Molakvoæ <skjnldsv@protonmail.com> | 2023-01-04 19:06:52 +0100 |
---|---|---|
committer | John Molakvoæ <skjnldsv@protonmail.com> | 2023-01-17 18:30:41 +0100 |
commit | b9906fb21e9f1aadf14e473b8c26a2ec7537fa11 (patch) | |
tree | 3b068eb999c675760d715e78da2d5eee8668cb44 /apps/files/lib | |
parent | 9af7ee8d11b43a7a3d14f7aa8390aff0a4174f55 (diff) | |
download | nextcloud-server-b9906fb21e9f1aadf14e473b8c26a2ec7537fa11.tar.gz nextcloud-server-b9906fb21e9f1aadf14e473b8c26a2ec7537fa11.zip |
feat(files): Quota in navigation
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
Diffstat (limited to 'apps/files/lib')
-rw-r--r-- | apps/files/lib/Controller/AjaxController.php | 57 | ||||
-rw-r--r-- | apps/files/lib/Controller/ApiController.php | 14 | ||||
-rw-r--r-- | apps/files/lib/Controller/ViewController.php | 24 |
3 files changed, 25 insertions, 70 deletions
diff --git a/apps/files/lib/Controller/AjaxController.php b/apps/files/lib/Controller/AjaxController.php deleted file mode 100644 index cd26ab7a6f8..00000000000 --- a/apps/files/lib/Controller/AjaxController.php +++ /dev/null @@ -1,57 +0,0 @@ -<?php - -declare(strict_types=1); - -/** - * @copyright Copyright (c) 2018, Roeland Jago Douma <roeland@famdouma.nl> - * - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -namespace OCA\Files\Controller; - -use OCA\Files\Helper; -use OCP\AppFramework\Controller; -use OCP\AppFramework\Http\JSONResponse; -use OCP\Files\NotFoundException; -use OCP\IRequest; - -class AjaxController extends Controller { - public function __construct(string $appName, IRequest $request) { - parent::__construct($appName, $request); - } - - /** - * @NoAdminRequired - */ - public function getStorageStats(string $dir = '/'): JSONResponse { - try { - return new JSONResponse([ - 'status' => 'success', - 'data' => Helper::buildFileStorageStatistics($dir), - ]); - } catch (NotFoundException $e) { - return new JSONResponse([ - 'status' => 'error', - 'data' => [ - 'message' => 'Folder not found' - ], - ]); - } - } -} diff --git a/apps/files/lib/Controller/ApiController.php b/apps/files/lib/Controller/ApiController.php index f2329fc384b..604cf9a3c64 100644 --- a/apps/files/lib/Controller/ApiController.php +++ b/apps/files/lib/Controller/ApiController.php @@ -257,6 +257,20 @@ class ApiController extends Controller { return new DataResponse(['files' => $files]); } + + /** + * Returns the current logged-in user's storage stats. + * + * @NoAdminRequired + * + * @param ?string $dir the directory to get the storage stats from + * @return JSONResponse + */ + public function getStorageStats($dir = '/'): JSONResponse { + $storageInfo = \OC_Helper::getStorageInfo($dir ?: '/'); + return new JSONResponse(['message' => 'ok', 'data' => $storageInfo]); + } + /** * Change the default sort mode * diff --git a/apps/files/lib/Controller/ViewController.php b/apps/files/lib/Controller/ViewController.php index 0594b63f56b..b607764e602 100644 --- a/apps/files/lib/Controller/ViewController.php +++ b/apps/files/lib/Controller/ViewController.php @@ -136,11 +136,11 @@ class ViewController extends Controller { * @return array * @throws \OCP\Files\NotFoundException */ - protected function getStorageInfo() { + protected function getStorageInfo(string $dir = '/') { \OC_Util::setupFS(); - $dirInfo = \OC\Files\Filesystem::getFileInfo('/', false); + $rootInfo = \OC\Files\Filesystem::getFileInfo('/', false); - return \OC_Helper::getStorageInfo('/', $dirInfo); + return \OC_Helper::getStorageInfo($dir, $rootInfo ?: null); } /** @@ -241,18 +241,16 @@ class ViewController extends Controller { $nav->assign('navigationItems', $navItems); - $nav->assign('usage', \OC_Helper::humanFileSize($storageInfo['used'])); - if ($storageInfo['quota'] === \OCP\Files\FileInfo::SPACE_UNLIMITED) { - $totalSpace = $this->l10n->t('Unlimited'); - } else { - $totalSpace = \OC_Helper::humanFileSize($storageInfo['total']); - } - $nav->assign('total_space', $totalSpace); - $nav->assign('quota', $storageInfo['quota']); - $nav->assign('usage_relative', $storageInfo['relative']); - $contentItems = []; + try { + // If view is files, we use the directory, otherwise we use the root storage + $storageInfo = $this->getStorageInfo(($view === 'files' && $dir) ? $dir : '/'); + } catch(\Exception $e) { + $storageInfo = $this->getStorageInfo(); + } + + $this->initialState->provideInitialState('storageStats', $storageInfo); $this->initialState->provideInitialState('navigation', $navItems); $this->initialState->provideInitialState('config', $this->userConfig->getConfigs()); |