fixed bugs where labels would dissappear

Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>
This commit is contained in:
Manuel Arno Korfmann
2018-08-05 22:33:42 +02:00
committed by Julius Härtl
parent 4d5353b8d4
commit 94e1b86eaf
7 changed files with 75 additions and 49 deletions

View File

@@ -54,22 +54,6 @@ class LabelMapper extends DeckMapper implements IPermissionMapper {
return $this->findEntities($sql, [$boardId], $limit, $offset);
}
public function liveOrMemoizedLabelsForBoardId($boardId) {
if(is_null($boardId)) {
return array();
}
if(!isset($this->memoizedLabelsByBoardId)) {
$this->memoizedLabelsByBoardId = array();
}
if(!array_key_exists($boardId, $this->memoizedLabelsByBoardId)) {
$this->memoizedLabelsByBoardId[$boardId] = $this->getAssignedLabelsForBoard($boardId);
}
return $this->memoizedLabelsByBoardId[$boardId];
}
public function getAssignedLabelsForBoard($boardId) {
$labels = $this->findAssignedLabelsForBoard($boardId);
$result = array();

View File

@@ -31,6 +31,7 @@ use OCA\Deck\Db\Acl;
use OCA\Deck\Db\StackMapper;
use OCA\Deck\Notification\NotificationHelper;
use OCA\Deck\Db\BoardMapper;
use OCA\Deck\Db\LabelMapper;
use OCA\Deck\NotFoundException;
use OCA\Deck\StatusException;
@@ -40,6 +41,7 @@ class CardService {
private $cardMapper;
private $stackMapper;
private $boardMapper;
private $labelMapper;
private $permissionService;
private $boardService;
private $notificationHelper;
@@ -49,8 +51,9 @@ class CardService {
public function __construct(
CardMapper $cardMapper,
StackMapper $stackMapper,
BoardMapper $boardMapper,
StackMapper $stackMapper,
BoardMapper $boardMapper,
LabelMapper $labelMapper,
PermissionService $permissionService,
BoardService $boardService,
NotificationHelper $notificationHelper,
@@ -61,6 +64,7 @@ class CardService {
$this->cardMapper = $cardMapper;
$this->stackMapper = $stackMapper;
$this->boardMapper = $boardMapper;
$this->labelMapper = $labelMapper;
$this->permissionService = $permissionService;
$this->boardService = $boardService;
$this->notificationHelper = $notificationHelper;
@@ -69,9 +73,20 @@ class CardService {
$this->currentUser = $userId;
}
public function enrich($card) {
$cardId = $card->getId();
$card->setAssignedUsers($this->assignedUsersMapper->find($cardId));
$card->setLabels($this->labelMapper->findAssignedLabelsForCard($cardId));
$card->setAttachmentCount($this->attachmentService->count($cardId));
}
public function fetchDeleted($boardId) {
$this->permissionService->checkPermission($this->boardMapper, $boardId, Acl::PERMISSION_READ);
return $this->cardMapper->findDeleted($boardId);
$cards = $this->cardMapper->findDeleted($boardId);
foreach ($cards as $card) {
$this->enrich($card);
}
return $cards;
}
public function find($cardId) {

View File

@@ -43,6 +43,7 @@ class StackService {
private $labelMapper;
private $permissionService;
private $boardService;
private $cardService;
private $assignedUsersMapper;
private $attachmentService;
@@ -53,6 +54,7 @@ class StackService {
LabelMapper $labelMapper,
PermissionService $permissionService,
BoardService $boardService,
CardService $cardService,
AssignedUsersMapper $assignedUsersMapper,
AttachmentService $attachmentService
) {
@@ -62,6 +64,7 @@ class StackService {
$this->labelMapper = $labelMapper;
$this->permissionService = $permissionService;
$this->boardService = $boardService;
$this->cardService = $cardService;
$this->assignedUsersMapper = $assignedUsersMapper;
$this->attachmentService = $attachmentService;
}
@@ -73,14 +76,8 @@ class StackService {
return;
}
$labels = $this->labelMapper->liveOrMemoizedLabelsForBoardId($stack->getBoardId());
foreach ($cards as $cardIndex => $card) {
$assignedUsers = $this->assignedUsersMapper->find($card->getId());
$card->setAssignedUsers($assignedUsers);
if (array_key_exists($card->id, $labels)) {
$cards[$cardIndex]->setLabels($labels[$card->id]);
}
$card->setAttachmentCount($this->attachmentService->count($card->getId()));
foreach ($cards as $card) {
$this->cardService->enrich($card);
}
$stack->setCards($cards);