Skip to content

Commit 62e1ca3

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

5 files changed

Lines changed: 35 additions & 3 deletions

File tree

appinfo/routes.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@
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'],
144144
['name' => 'card_ocs#assignLabel', 'url' => '/api/v{apiVersion}/cards/{cardId}/label/{labelId}', 'verb' => 'POST'],
145+
['name' => 'card_ocs#removeLabel', 'url' => '/api/v{apiVersion}/cards/{cardId}/label/{labelId}', 'verb' => 'DELETE'],
145146

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

lib/Controller/CardOcsController.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,20 @@ public function assignLabel(?int $boardId, int $cardId, int $labelId): DataRespo
7777
return new DataResponse($this->cardService->assignLabel($cardId, $labelId));
7878
}
7979

80+
#[NoAdminRequired]
81+
#[PublicPage]
82+
#[NoCSRFRequired]
83+
public function removeLabel(?int $boardId, int $cardId, int $labelId): DataResponse {
84+
if ($boardId) {
85+
$board = $this->boardService->find($boardId, false);
86+
if ($board->getExternalId()) {
87+
return new DataResponse($this->externalBoardService->removeLabelOnRemote($board, $cardId, $labelId));
88+
}
89+
}
90+
91+
return new DataResponse($this->cardService->removeLabel($cardId, $labelId));
92+
}
93+
8094
#[NoAdminRequired]
8195
#[PublicPage]
8296
#[NoCSRFRequired]

lib/Service/ExternalBoardService.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,18 @@ public function assignLabelOnRemote(Board $localBoard, int $cardId, int $labelId
147147
return $this->proxy->getOcsData($resp);
148148
}
149149

150+
public function removeLabelOnRemote(Board $localBoard, int $cardId, int $labelId): array {
151+
$this->configService->ensureFederationEnabled();
152+
$this->permissionService->checkPermission($this->boardMapper, $localBoard->getId(), Acl::PERMISSION_EDIT, $this->userId, false, false);
153+
$shareToken = $localBoard->getShareToken();
154+
$ownerCloudId = $this->cloudIdManager->resolveCloudId($localBoard->getOwner());
155+
$url = $ownerCloudId->getRemote() . '/ocs/v2.php/apps/deck/api/v1.0/cards/' . $cardId . '/label/' . $labelId;
156+
$resp = $this->proxy->delete($ownerCloudId->getId(), $shareToken, $url, [
157+
'boardId' => $localBoard->getExternalId(),
158+
]);
159+
return $this->proxy->getOcsData($resp);
160+
}
161+
150162
public function createStackOnRemote(
151163
Board $localBoard,
152164
string $title,

src/services/CardApi.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ export class CardApi {
204204
return axios.post(this.ocsUrl(`/cards/${data.card.id}/label/${data.labelId}`), { boardId: data.boardId ? data.boardId : null })
205205
.then(
206206
(response) => {
207-
return Promise.resolve(response.data)
207+
return Promise.resolve(response.data.ocs.data)
208208
},
209209
(err) => {
210210
return Promise.reject(err)
@@ -216,10 +216,14 @@ export class CardApi {
216216
}
217217

218218
removeLabelFromCard(data) {
219-
return axios.delete(this.url(`/cards/${data.card.id}/label/${data.labelId}`))
219+
return axios.delete(this.ocsUrl(`/cards/${data.card.id}/label/${data.labelId}`), {
220+
data: {
221+
boardId: data.boardId ? data.boardId : null,
222+
},
223+
})
220224
.then(
221225
(response) => {
222-
return Promise.resolve(response.data)
226+
return Promise.resolve(response.data.ocs.data)
223227
},
224228
(err) => {
225229
return Promise.reject(err)

src/store/card.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,7 @@ export default function cardModuleFactory() {
355355
commit('updateCardProperty', { property: 'labels', card: data.card })
356356
},
357357
async removeLabel({ commit }, data) {
358+
data.boardId = this.state.currentBoard.id
358359
await apiClient.removeLabelFromCard(data)
359360
commit('updateCardProperty', { property: 'labels', card: data.card })
360361
},

0 commit comments

Comments
 (0)