Skip to content

Commit cc89e03

Browse files
committed
feat(federation): assign labels
Signed-off-by: grnd-alt <git@belakkaf.net>
1 parent e9fded4 commit cc89e03

6 files changed

Lines changed: 31 additions & 1 deletion

File tree

appinfo/routes.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@
141141

142142
['name' => 'card_ocs#create', 'url' => '/api/v{apiVersion}/cards', 'verb' => 'POST'],
143143
['name' => 'card_ocs#update', 'url' => '/api/v{apiVersion}/cards/{cardId}', 'verb' => 'PUT'],
144+
['name' => 'card_ocs#assignLabel', 'url' => '/api/v{apiVersion}/cards/{cardId}/label/{labelId}', 'verb' => 'POST'],
144145

145146
['name' => 'stack_ocs#create', 'url' => '/api/v{apiVersion}/stacks', 'verb' => 'POST'],
146147
['name' => 'stack_ocs#delete', 'url' => '/api/v{apiVersion}/stacks/{stackId}/{boardId}', 'verb' => 'DELETE', 'defaults' => ['boardId' => null]],

lib/Controller/CardOcsController.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,21 @@ public function create(string $title, int $stackId, ?int $boardId = null, ?strin
6262
return new DataResponse($card);
6363
}
6464

65+
66+
#[NoAdminRequired]
67+
#[PublicPage]
68+
#[NoCSRFRequired]
69+
public function assignLabel(?int $boardId, int $cardId, int $labelId): DataResponse {
70+
if ($boardId) {
71+
$board = $this->boardService->find($boardId, false);
72+
if ($board->getExternalId()) {
73+
return new DataResponse($this->externalBoardService->assignLabelOnRemote($board, $cardId, $labelId));
74+
}
75+
}
76+
77+
return new DataResponse($this->cardService->assignLabel($cardId, $labelId));
78+
}
79+
6580
#[NoAdminRequired]
6681
#[PublicPage]
6782
#[NoCSRFRequired]

lib/Service/ExternalBoardService.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,18 @@ public function updateCardOnRemote(
135135
return $this->proxy->getOcsData($resp);
136136
}
137137

138+
public function assignLabelOnRemote(Board $localBoard, int $cardId, int $labelId): array {
139+
$this->configService->ensureFederationEnabled();
140+
$this->permissionService->checkPermission($this->boardMapper, $localBoard->getId(), Acl::PERMISSION_EDIT, $this->userId, false, false);
141+
$shareToken = $localBoard->getShareToken();
142+
$ownerCloudId = $this->cloudIdManager->resolveCloudId($localBoard->getOwner());
143+
$url = $ownerCloudId->getRemote() . '/ocs/v2.php/apps/deck/api/v1.0/cards/' . $cardId . '/label/' . $labelId;
144+
$resp = $this->proxy->post($ownerCloudId->getId(), $shareToken, $url, [
145+
'boardId' => $localBoard->getExternalId(),
146+
]);
147+
return $this->proxy->getOcsData($resp);
148+
}
149+
138150
public function createStackOnRemote(
139151
Board $localBoard,
140152
string $title,

src/components/card/CardSidebarTabDetails.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ export default {
156156
const data = {
157157
card: this.copiedCard,
158158
labelId: newLabel.id,
159+
boardId: this.copiedCard.boardId,
159160
}
160161
this.$store.dispatch('addLabel', data)
161162
},

src/services/CardApi.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ export class CardApi {
201201
}
202202

203203
assignLabelToCard(data) {
204-
return axios.post(this.url(`/cards/${data.card.id}/label/${data.labelId}`))
204+
return axios.post(this.ocsUrl(`/cards/${data.card.id}/label/${data.labelId}`), { boardId: data.boardId ? data.boardId : null })
205205
.then(
206206
(response) => {
207207
return Promise.resolve(response.data)

src/store/card.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,7 @@ export default function cardModuleFactory() {
350350
commit('removeUserFromCard', user)
351351
},
352352
async addLabel({ commit }, data) {
353+
data.boardId = this.state.currentBoard.id
353354
await apiClient.assignLabelToCard(data)
354355
commit('updateCardProperty', { property: 'labels', card: data.card })
355356
},

0 commit comments

Comments
 (0)