mirror of https://github.com/nextcloud/bookmarks
fix(ui): Use display names instead of ids
fixes #1628 Signed-off-by: Marcel Klehr <mklehr@gmx.net>
This commit is contained in:
parent
a54ebb83e6
commit
0711ec3544
|
@ -42,7 +42,7 @@ Requirements:
|
|||
<database>pgsql</database>
|
||||
<lib>intl</lib>
|
||||
<lib>mbstring</lib>
|
||||
<nextcloud min-version="25" max-version="25" />
|
||||
<nextcloud min-version="25" max-version="26" />
|
||||
</dependencies>
|
||||
<background-jobs>
|
||||
<job>OCA\Bookmarks\BackgroundJobs\CrawlJob</job>
|
||||
|
|
|
@ -13,7 +13,6 @@ use OCA\Bookmarks\Db\PublicFolder;
|
|||
use OCA\Bookmarks\Db\PublicFolderMapper;
|
||||
use OCA\Bookmarks\Db\Share;
|
||||
use OCA\Bookmarks\Db\SharedFolder;
|
||||
use OCA\Bookmarks\Db\SharedFolderMapper;
|
||||
use OCA\Bookmarks\Db\ShareMapper;
|
||||
use OCA\Bookmarks\Db\TreeMapper;
|
||||
use OCA\Bookmarks\Exception\ChildrenOrderValidationError;
|
||||
|
@ -30,52 +29,26 @@ use OCP\AppFramework\Db\MultipleObjectsReturnedException;
|
|||
use OCP\AppFramework\Http;
|
||||
use OCP\AppFramework\Http\DataResponse;
|
||||
use OCP\AppFramework\Http\JSONResponse;
|
||||
use OCP\IUserManager;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
class FoldersController extends ApiController {
|
||||
private $userId;
|
||||
private string $userId;
|
||||
|
||||
/** @var FolderMapper */
|
||||
private $folderMapper;
|
||||
private FolderMapper $folderMapper;
|
||||
private PublicFolderMapper $publicFolderMapper;
|
||||
|
||||
/** @var PublicFolderMapper */
|
||||
private $publicFolderMapper;
|
||||
private ShareMapper $shareMapper;
|
||||
|
||||
/** @var SharedFolderMapper */
|
||||
private $sharedFolderMapper;
|
||||
private Authorizer $authorizer;
|
||||
|
||||
/** @var ShareMapper */
|
||||
private $shareMapper;
|
||||
|
||||
/**
|
||||
* @var Authorizer
|
||||
*/
|
||||
private $authorizer;
|
||||
|
||||
/**
|
||||
* @var TreeMapper
|
||||
*/
|
||||
private $treeMapper;
|
||||
|
||||
/**
|
||||
* @var int|null
|
||||
*/
|
||||
private $rootFolderId;
|
||||
/**
|
||||
* @var TreeCacheManager
|
||||
*/
|
||||
private $hashManager;
|
||||
/**
|
||||
* @var FolderService
|
||||
*/
|
||||
private $folders;
|
||||
/**
|
||||
* @var BookmarkService
|
||||
*/
|
||||
private $bookmarks;
|
||||
/**
|
||||
* @var \Psr\Log\LoggerInterface
|
||||
*/
|
||||
private $logger;
|
||||
private TreeMapper $treeMapper;
|
||||
private ?int $rootFolderId = null;
|
||||
private TreeCacheManager $hashManager;
|
||||
private FolderService $folders;
|
||||
private BookmarkService $bookmarks;
|
||||
private LoggerInterface $logger;
|
||||
private IUserManager $userManager;
|
||||
|
||||
/**
|
||||
* FoldersController constructor.
|
||||
|
@ -84,20 +57,19 @@ class FoldersController extends ApiController {
|
|||
* @param $request
|
||||
* @param FolderMapper $folderMapper
|
||||
* @param PublicFolderMapper $publicFolderMapper
|
||||
* @param SharedFolderMapper $sharedFolderMapper
|
||||
* @param ShareMapper $shareMapper
|
||||
* @param TreeMapper $treeMapper
|
||||
* @param Authorizer $authorizer
|
||||
* @param TreeCacheManager $hashManager
|
||||
* @param FolderService $folders
|
||||
* @param BookmarkService $bookmarks
|
||||
* @param \Psr\Log\LoggerInterface $logger
|
||||
* @param LoggerInterface $logger
|
||||
* @param IUserManager $userManager
|
||||
*/
|
||||
public function __construct($appName, $request, FolderMapper $folderMapper, PublicFolderMapper $publicFolderMapper, SharedFolderMapper $sharedFolderMapper, ShareMapper $shareMapper, TreeMapper $treeMapper, Authorizer $authorizer, TreeCacheManager $hashManager, FolderService $folders, BookmarkService $bookmarks, \Psr\Log\LoggerInterface $logger) {
|
||||
public function __construct($appName, $request, FolderMapper $folderMapper, PublicFolderMapper $publicFolderMapper, ShareMapper $shareMapper, TreeMapper $treeMapper, Authorizer $authorizer, TreeCacheManager $hashManager, FolderService $folders, BookmarkService $bookmarks, LoggerInterface $logger, IUserManager $userManager) {
|
||||
parent::__construct($appName, $request);
|
||||
$this->folderMapper = $folderMapper;
|
||||
$this->publicFolderMapper = $publicFolderMapper;
|
||||
$this->sharedFolderMapper = $sharedFolderMapper;
|
||||
$this->shareMapper = $shareMapper;
|
||||
$this->treeMapper = $treeMapper;
|
||||
$this->authorizer = $authorizer;
|
||||
|
@ -107,6 +79,7 @@ class FoldersController extends ApiController {
|
|||
$this->logger = $logger;
|
||||
|
||||
$this->authorizer->setCORS(true);
|
||||
$this->userManager = $userManager;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -166,6 +139,7 @@ class FoldersController extends ApiController {
|
|||
$returnFolder = $folder->toArray();
|
||||
$parent = $this->treeMapper->findParentOf(TreeMapper::TYPE_FOLDER, $folder->getId());
|
||||
$returnFolder['parent_folder'] = $this->toExternalFolderId($parent->getId());
|
||||
$returnFolder['userDisplayName'] = $this->userManager->get($returnFolder['userId'])->getDisplayName();
|
||||
return $returnFolder;
|
||||
}
|
||||
if ($folder instanceof SharedFolder) {
|
||||
|
@ -175,9 +149,10 @@ class FoldersController extends ApiController {
|
|||
$share = $this->shareMapper->findByFolderAndUser($folder->getFolderId(), $folder->getUserId());
|
||||
$returnFolder = $folder->toArray();
|
||||
$returnFolder['id'] = $folder->getFolderId();
|
||||
$returnFolder['user_id'] = $share->getOwner();
|
||||
$returnFolder['userId'] = $share->getOwner();
|
||||
$parent = $this->treeMapper->findParentOf(TreeMapper::TYPE_SHARE, $folder->getId());
|
||||
$returnFolder['parent_folder'] = $this->toExternalFolderId($parent->getId());
|
||||
$returnFolder['userDisplayName'] = $this->userManager->get($returnFolder['userId'])->getDisplayName();
|
||||
return $returnFolder;
|
||||
}
|
||||
|
||||
|
|
|
@ -38,9 +38,7 @@ class Folder extends Entity {
|
|||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*
|
||||
* @psalm-return array{id: int, title: string, userId: string}
|
||||
* @return array{id: int, title: string, userId: string}
|
||||
*/
|
||||
public function toArray(): array {
|
||||
return ['id' => $this->id, 'title' => $this->title, 'userId' => $this->userId];
|
||||
|
|
|
@ -22,6 +22,7 @@ use OCP\DB\QueryBuilder\IQueryBuilder;
|
|||
use OCP\EventDispatcher\IEventDispatcher;
|
||||
use OCP\IConfig;
|
||||
use OCP\IDBConnection;
|
||||
use OCP\IUserManager;
|
||||
use PDO;
|
||||
use function call_user_func;
|
||||
|
||||
|
@ -49,60 +50,28 @@ class TreeMapper extends QBMapper {
|
|||
|
||||
protected $entityColumns = [];
|
||||
|
||||
/** @var IEventDispatcher */
|
||||
private $eventDispatcher;
|
||||
private IEventDispatcher $eventDispatcher;
|
||||
|
||||
/**
|
||||
* @var BookmarkMapper
|
||||
*/
|
||||
protected $bookmarkMapper;
|
||||
protected BookmarkMapper $bookmarkMapper;
|
||||
|
||||
/**
|
||||
* @var FolderMapper
|
||||
*/
|
||||
protected $folderMapper;
|
||||
protected FolderMapper $folderMapper;
|
||||
|
||||
/**
|
||||
* @var TreeCacheManager
|
||||
*/
|
||||
protected $treeCache;
|
||||
protected TreeCacheManager $treeCache;
|
||||
|
||||
/**
|
||||
* @var ShareMapper
|
||||
*/
|
||||
private $shareMapper;
|
||||
/**
|
||||
* @var SharedFolderMapper
|
||||
*/
|
||||
private $sharedFolderMapper;
|
||||
/**
|
||||
* @var TagMapper
|
||||
*/
|
||||
private $tagMapper;
|
||||
/**
|
||||
* @var IConfig
|
||||
*/
|
||||
private $config;
|
||||
/**
|
||||
* @var PublicFolderMapper
|
||||
*/
|
||||
private $publicFolderMapper;
|
||||
/**
|
||||
* @var IQueryBuilder
|
||||
*/
|
||||
private $insertQuery;
|
||||
/**
|
||||
* @var IQueryBuilder
|
||||
*/
|
||||
private $parentQuery;
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
private $getChildrenQuery;
|
||||
/**
|
||||
* @var IQueryBuilder
|
||||
*/
|
||||
private $getChildrenOrderQuery;
|
||||
private ShareMapper $shareMapper;
|
||||
|
||||
private SharedFolderMapper $sharedFolderMapper;
|
||||
|
||||
private PublicFolderMapper $publicFolderMapper;
|
||||
|
||||
private IQueryBuilder $insertQuery;
|
||||
|
||||
private IQueryBuilder $parentQuery;
|
||||
|
||||
private array $getChildrenQuery;
|
||||
|
||||
private IQueryBuilder $getChildrenOrderQuery;
|
||||
private IUserManager $userManager;
|
||||
|
||||
/**
|
||||
* FolderMapper constructor.
|
||||
|
@ -117,8 +86,9 @@ class TreeMapper extends QBMapper {
|
|||
* @param IConfig $config
|
||||
* @param PublicFolderMapper $publicFolderMapper
|
||||
* @param TreeCacheManager $treeCache
|
||||
* @param IUserManager $userManager
|
||||
*/
|
||||
public function __construct(IDBConnection $db, IEventDispatcher $eventDispatcher, FolderMapper $folderMapper, BookmarkMapper $bookmarkMapper, ShareMapper $shareMapper, SharedFolderMapper $sharedFolderMapper, TagMapper $tagMapper, IConfig $config, \OCA\Bookmarks\Db\PublicFolderMapper $publicFolderMapper, TreeCacheManager $treeCache) {
|
||||
public function __construct(IDBConnection $db, IEventDispatcher $eventDispatcher, FolderMapper $folderMapper, BookmarkMapper $bookmarkMapper, ShareMapper $shareMapper, SharedFolderMapper $sharedFolderMapper, PublicFolderMapper $publicFolderMapper, TreeCacheManager $treeCache, IUserManager $userManager) {
|
||||
parent::__construct($db, 'bookmarks_tree');
|
||||
$this->eventDispatcher = $eventDispatcher;
|
||||
$this->folderMapper = $folderMapper;
|
||||
|
@ -131,8 +101,6 @@ class TreeMapper extends QBMapper {
|
|||
self::TYPE_FOLDER => Folder::$columns,
|
||||
self::TYPE_BOOKMARK => Bookmark::$columns,
|
||||
];
|
||||
$this->tagMapper = $tagMapper;
|
||||
$this->config = $config;
|
||||
$this->publicFolderMapper = $publicFolderMapper;
|
||||
|
||||
$this->insertQuery = $this->getInsertQuery();
|
||||
|
@ -145,6 +113,7 @@ class TreeMapper extends QBMapper {
|
|||
];
|
||||
|
||||
$this->treeCache = $treeCache;
|
||||
$this->userManager = $userManager;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -712,6 +681,7 @@ class TreeMapper extends QBMapper {
|
|||
}
|
||||
$folders = array_map(function (Folder $folder) use ($layers, $folderId) {
|
||||
$array = $folder->toArray();
|
||||
$array['userDisplayName'] = $this->userManager->get($array['userId'])->getDisplayName();
|
||||
$array['parent_folder'] = $folderId;
|
||||
if ($layers !== 0) {
|
||||
$array['children'] = $this->getSubFolders($folder->getId(), $layers - 1);
|
||||
|
@ -726,6 +696,7 @@ class TreeMapper extends QBMapper {
|
|||
$array = $sharedFolder->toArray();
|
||||
$array['id'] = $share->getFolderId();
|
||||
$array['userId'] = $share->getOwner();
|
||||
$array['userDisplayName'] = $this->userManager->get($array['userId'])->getDisplayName();
|
||||
$array['parent_folder'] = $folderId;
|
||||
if ($layers !== 0) {
|
||||
$array['children'] = $this->getSubFolders($share->getFolderId(), $layers - 1);
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
<template #tags>
|
||||
<div class="folder__tags">
|
||||
<div v-if="!isOwner && !isSharedPublicly" class="folder__tag">
|
||||
{{ t('bookmarks', 'Shared by {user}', {user: folder.userId}) }}
|
||||
{{ t('bookmarks', 'Shared by {user}', {user: folder.userDisplayName}) }}
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
<InformationVariantIcon />
|
||||
</template>
|
||||
<h3>{{ t('bookmarks', 'Owner') }}</h3>
|
||||
<NcUserBubble :user="folder.userId" :display-name="folder.userId" />
|
||||
<NcUserBubble :user="folder.userId" :display-name="folder.userDisplayName" />
|
||||
<h3>{{ t('bookmarks', 'Bookmarks') }}</h3>
|
||||
{{ bookmarkCount }}
|
||||
</NcAppSidebarTab>
|
||||
|
|
|
@ -201,18 +201,15 @@ class FolderControllerTest extends TestCase {
|
|||
$this->groupManager = OC::$server->get(IGroupManager::class);
|
||||
$loggerInterface = OC::$server->get(LoggerInterface::class);
|
||||
|
||||
/** @var IUserManager */
|
||||
$userManager = OC::$server->get(IUserManager::class);
|
||||
|
||||
$this->group = $this->groupManager->createGroup('foobar');
|
||||
$this->group->addUser($userManager->get($this->otherUser));
|
||||
$this->group->addUser($this->userManager->get($this->otherUser));
|
||||
|
||||
$this->authorizer = OC::$server->get(Authorizer::class);
|
||||
|
||||
$this->controller = new FoldersController('bookmarks', $this->request, $this->folderMapper, $this->publicFolderMapper, $this->sharedFolderMapper, $this->shareMapper, $this->treeMapper, $this->authorizer, $this->hashManager, $this->folders, $this->bookmarks, $loggerInterface);
|
||||
$this->otherController = new FoldersController('bookmarks', $this->request, $this->folderMapper, $this->publicFolderMapper, $this->sharedFolderMapper, $this->shareMapper, $this->treeMapper, $this->authorizer, $this->hashManager, $this->folders, $this->bookmarks, $loggerInterface);
|
||||
$this->public = new FoldersController('bookmarks', $this->publicRequest, $this->folderMapper, $this->publicFolderMapper, $this->sharedFolderMapper, $this->shareMapper, $this->treeMapper, $this->authorizer, $this->hashManager, $this->folders, $this->bookmarks, $loggerInterface);
|
||||
$this->noauth = new FoldersController('bookmarks', $this->request, $this->folderMapper, $this->publicFolderMapper, $this->sharedFolderMapper, $this->shareMapper, $this->treeMapper, $this->authorizer, $this->hashManager, $this->folders, $this->bookmarks, $loggerInterface);
|
||||
$this->controller = new FoldersController('bookmarks', $this->request, $this->folderMapper, $this->publicFolderMapper, $this->shareMapper, $this->treeMapper, $this->authorizer, $this->hashManager, $this->folders, $this->bookmarks, $loggerInterface, $this->userManager);
|
||||
$this->otherController = new FoldersController('bookmarks', $this->request, $this->folderMapper, $this->publicFolderMapper, $this->shareMapper, $this->treeMapper, $this->authorizer, $this->hashManager, $this->folders, $this->bookmarks, $loggerInterface, $this->userManager);
|
||||
$this->public = new FoldersController('bookmarks', $this->publicRequest, $this->folderMapper, $this->publicFolderMapper, $this->shareMapper, $this->treeMapper, $this->authorizer, $this->hashManager, $this->folders, $this->bookmarks, $loggerInterface, $this->userManager);
|
||||
$this->noauth = new FoldersController('bookmarks', $this->request, $this->folderMapper, $this->publicFolderMapper, $this->shareMapper, $this->treeMapper, $this->authorizer, $this->hashManager, $this->folders, $this->bookmarks, $loggerInterface, $this->userManager);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue