Skip to content

Commit

Permalink
fix: Adapt URLs generated in the backend to new routes
Browse files Browse the repository at this point in the history
Signed-off-by: Julius Knorr <[email protected]>
  • Loading branch information
juliusknorr committed Jan 17, 2025
1 parent 98c3e4a commit 313fccc
Show file tree
Hide file tree
Showing 11 changed files with 42 additions and 35 deletions.
4 changes: 2 additions & 2 deletions lib/Activity/DeckProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ public function parse($language, IEvent $event, ?IEvent $previousEvent = null):
];

if (array_key_exists('board', $subjectParams)) {
$card['link'] = $this->cardService->getRedirectUrlForCard($event->getObjectId());
$card['link'] = $this->cardService->getCardUrl($event->getObjectId());
$event->setLink($card['link']);
}
$params['card'] = $card;
Expand Down Expand Up @@ -365,6 +365,6 @@ private function parseParamForChanges($subjectParams, $params, $event) {
}

public function deckUrl($endpoint) {
return $this->urlGenerator->linkToRouteAbsolute('deck.page.index') . '#' . $endpoint;
return $this->urlGenerator->linkToRouteAbsolute('deck.page.index') . trim($endpoint, '/');
}
}
2 changes: 1 addition & 1 deletion lib/Collaboration/Resources/ResourceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ public function getType(): string {
*/
public function getResourceRichObject(IResource $resource): array {
$board = $this->getBoard($resource);
$link = $this->urlGenerator->linkToRoute('deck.page.index') . '#/board/' . $resource->getId();
$link = $this->urlGenerator->linkToRoute('deck.page.indexBoard', ['boardId' => $resource->getId()]);

return [
'type' => self::RESOURCE_TYPE,
Expand Down
5 changes: 4 additions & 1 deletion lib/Collaboration/Resources/ResourceProviderCard.php
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,10 @@ public function getResourceRichObject(IResource $resource): array {
throw new ResourceException('No unique card found for resource, this should never happen');
}

$link = $this->urlGenerator->linkToRoute('deck.page.index') . '#/board/' . $board->getId() . '/card/' . $resource->getId();
$link = $this->urlGenerator->linkToRoute('deck.page.indexCard', [
'boardId' => $board->getId(),
'cardId' => $card->getId()
]);

return [
'type' => self::RESOURCE_TYPE,
Expand Down
42 changes: 25 additions & 17 deletions lib/Notification/Notifier.php
Original file line number Diff line number Diff line change
Expand Up @@ -85,9 +85,9 @@ public function prepare(INotification $notification, string $languageCode): INot

switch ($notification->getSubject()) {
case 'card-assigned':
$cardId = $notification->getObjectId();
$cardId = (int)$notification->getObjectId();
$stack = $this->stackMapper->findStackFromCardId($cardId);
$boardId = $stack ? $stack->getBoardId() : null;
$boardId = $stack ? (int)$stack->getBoardId() : null;
if (!$boardId) {
throw new AlreadyProcessedException();
}
Expand All @@ -110,13 +110,13 @@ public function prepare(INotification $notification, string $languageCode): INot
'name' => $params[0],
'boardname' => $params[1],
'stackname' => $stack->getTitle(),
'link' => $this->url->linkToRouteAbsolute('deck.page.index') . '#/board/' . $boardId . '/card/' . $cardId . '',
'link' => $this->getCardUrl($boardId, $cardId),
],
'deck-board' => [
'type' => 'deck-board',
'id' => $boardId,
'name' => $params[1],
'link' => $this->url->linkToRouteAbsolute('deck.page.index') . '#/board/' . $boardId,
'link' => $this->getBoardUrl($boardId),
],
'user' => [
'type' => 'user',
Expand All @@ -125,12 +125,12 @@ public function prepare(INotification $notification, string $languageCode): INot
]
]
);
$notification->setLink($this->url->linkToRouteAbsolute('deck.page.index') . '#/board/' . $boardId . '/card/' . $cardId . '');
$notification->setLink($this->getCardUrl($boardId, $cardId));
break;
case 'card-overdue':
$cardId = $notification->getObjectId();
$cardId = (int)$notification->getObjectId();
$stack = $this->stackMapper->findStackFromCardId($cardId);
$boardId = $stack ? $stack->getBoardId() : null;
$boardId = $stack ? (int)$stack->getBoardId() : null;
if (!$boardId) {
throw new AlreadyProcessedException();
}
Expand All @@ -147,22 +147,22 @@ public function prepare(INotification $notification, string $languageCode): INot
'name' => $params[0],
'boardname' => $params[1],
'stackname' => $stack->getTitle(),
'link' => $this->url->linkToRouteAbsolute('deck.page.index') . '#/board/' . $boardId . '/card/' . $cardId . '',
'link' => $this->getCardUrl($boardId, $cardId),
],
'deck-board' => [
'type' => 'deck-board',
'id' => $boardId,
'name' => $params[1],
'link' => $this->url->linkToRouteAbsolute('deck.page.index') . '#/board/' . $boardId,
'link' => $this->getBoardUrl($boardId),
],
]
);
$notification->setLink($this->url->linkToRouteAbsolute('deck.page.index') . '#/board/' . $boardId . '/card/' . $cardId . '');
$notification->setLink($this->getCardUrl($boardId, $cardId));
break;
case 'card-comment-mentioned':
$cardId = $notification->getObjectId();
$cardId = (int)$notification->getObjectId();
$stack = $this->stackMapper->findStackFromCardId($cardId);
$boardId = $stack ? $stack->getBoardId() : null;
$boardId = $stack ? (int)$stack->getBoardId() : null;
if (!$boardId) {
throw new AlreadyProcessedException();
}
Expand All @@ -185,7 +185,7 @@ public function prepare(INotification $notification, string $languageCode): INot
'name' => $params[0],
'boardname' => $params[1],
'stackname' => $stack->getTitle(),
'link' => $this->url->linkToRouteAbsolute('deck.page.index') . '#/board/' . $boardId . '/card/' . $cardId . '',
'link' => $this->getCardUrl($boardId, $cardId),
],
'user' => [
'type' => 'user',
Expand All @@ -197,10 +197,10 @@ public function prepare(INotification $notification, string $languageCode): INot
if ($notification->getMessage() === '{message}') {
$notification->setParsedMessage($notification->getMessageParameters()['message']);
}
$notification->setLink($this->url->linkToRouteAbsolute('deck.page.index') . '#/board/' . $boardId . '/card/' . $cardId . '');
$notification->setLink($this->getCardUrl($boardId, $cardId));
break;
case 'board-shared':
$boardId = $notification->getObjectId();
$boardId = (int)$notification->getObjectId();
if (!$boardId) {
throw new AlreadyProcessedException();
}
Expand All @@ -220,7 +220,7 @@ public function prepare(INotification $notification, string $languageCode): INot
'type' => 'deck-board',
'id' => $boardId,
'name' => $params[0],
'link' => $this->url->linkToRouteAbsolute('deck.page.index') . '#/board/' . $boardId,
'link' => $this->getBoardUrl($boardId),
],
'user' => [
'type' => 'user',
Expand All @@ -229,9 +229,17 @@ public function prepare(INotification $notification, string $languageCode): INot
]
]
);
$notification->setLink($this->url->linkToRouteAbsolute('deck.page.index') . '#/board/' . $boardId . '/');
$notification->setLink($this->getBoardUrl($boardId));
break;
}
return $notification;
}

private function getBoardUrl(int $boardId): string {
return $this->url->linkToRouteAbsolute('deck.page.indexBoard', ['boardId' => $boardId]);
}

private function getCardUrl(int $boardId, int $cardId): string {
return $this->url->linkToRouteAbsolute('deck.page.indexCard', ['boardId' => $boardId, 'cardId' => $cardId]);
}
}
2 changes: 1 addition & 1 deletion lib/Provider/DeckProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ public function improveSearchResult(ISearchResult $searchResult) {
try {
$board =
$this->fullTextSearchService->getBoardFromCardId((int)$document->getId());
$path = '#/board/' . $board->getId() . '/card/' . $document->getId();
$path = '/board/' . $board->getId() . '/card/' . $document->getId();
$document->setLink($this->urlGenerator->linkToRoute('deck.page.index') . $path);
} catch (DoesNotExistException $e) {
} catch (MultipleObjectsReturnedException $e) {
Expand Down
2 changes: 1 addition & 1 deletion lib/Search/BoardSearchResultEntry.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public function __construct(Board $board, $urlGenerator) {
),
$board->getTitle(),
'',
$urlGenerator->linkToRouteAbsolute('deck.page.index') . '#/board/' . $board->getId(),
$urlGenerator->linkToRouteAbsolute('deck.page.indexBoard', ['boardId' => $board->getId()]),
'icon-deck');
}
}
4 changes: 0 additions & 4 deletions lib/Service/BoardService.php
Original file line number Diff line number Diff line change
Expand Up @@ -746,10 +746,6 @@ private function enrichWithUsers($board, $since = -1) {
$board->setUsers(array_values($boardUsers));
}

public function getBoardUrl($endpoint) {
return $this->urlGenerator->linkToRouteAbsolute('deck.page.index') . '#' . $endpoint;
}

/**
* Clean a given board data from the Cache
*/
Expand Down
8 changes: 4 additions & 4 deletions lib/Service/CardService.php
Original file line number Diff line number Diff line change
Expand Up @@ -655,13 +655,13 @@ public function removeLabel($cardId, $labelId) {
$this->eventDispatcher->dispatchTyped(new CardUpdatedEvent($card));
}

public function getCardUrl($cardId) {
public function getCardUrl(int $cardId): string {
$boardId = $this->cardMapper->findBoardId($cardId);

return $this->urlGenerator->linkToRouteAbsolute('deck.page.index') . "#/board/$boardId/card/$cardId";
return $this->urlGenerator->linkToRouteAbsolute('deck.page.indexCard', ['boardId' => $boardId, 'cardId' => $cardId]);
}

public function getRedirectUrlForCard($cardId) {
return $this->urlGenerator->linkToRouteAbsolute('deck.page.index') . "card/$cardId";
public function getRedirectUrlForCard(int $cardId): string {
return $this->urlGenerator->linkToRouteAbsolute('deck.page.redirectToCard', ['cardId' => $cardId]);
}
}
2 changes: 1 addition & 1 deletion lib/Sharing/ShareAPIHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public function formatShare(IShare $share): array {
$boardId = $this->cardMapper->findBoardId($card->getId());
$result['share_with'] = $share->getSharedWith();
$result['share_with_displayname'] = $card->getTitle();
$result['share_with_link'] = $this->urlGenerator->linkToRouteAbsolute('deck.page.index') . '#/board/' . $boardId . '/card/' . $card->getId();
$result['share_with_link'] = $this->urlGenerator->linkToRouteAbsolute('deck.page.indexCard', ['boardId' => $boardId, 'cardId' => $card->getId()]);
return $result;
}

Expand Down
2 changes: 1 addition & 1 deletion lib/Teams/DeckTeamResourceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public function getSharedWith($teamId): array {
$this,
(string)$board->getId(),
$board->getTitle(),
$this->urlGenerator->linkToRouteAbsolute('deck.page.index') . '#/board/' . $board->getId(),
$this->urlGenerator->linkToRouteAbsolute('deck.page.indexBoard', ['boardId' => $board->getId()]),
$this->getBoardBulletIcon($board),
$this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('deck', 'deck-current.svg')),
);
Expand Down
4 changes: 2 additions & 2 deletions src/router.js
Original file line number Diff line number Diff line change
Expand Up @@ -144,8 +144,8 @@ const router = new Router({

router.beforeEach((to, from, next) => {
// Redirect if fullPath begins with a hash (ignore hashes later in path)
if (to.fullPath.substring(0, 2) === '/#') {
const path = to.fullPath.substring(2)
if (to.hash.substring(0, 2) === '#/') {
const path = to.fullPath.replace('/apps/deck/#/', '/apps/deck/')
next(path)
return
}
Expand Down

0 comments on commit 313fccc

Please sign in to comment.