Skip to content

Commit 26707b7

Browse files
committed
feat: working batch API for delting content
1 parent f424056 commit 26707b7

5 files changed

Lines changed: 67 additions & 1 deletion

File tree

assets/js/Components/ReviewFilesPage.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -856,6 +856,10 @@ const getSectionPostOptions = (newFile, sectionReferences) => {
856856
}
857857
}
858858

859+
const deleteSelectedFiles = () => {
860+
console.log(deleteFileQueue)
861+
}
862+
859863
// Wrapper to pass to file form for unreviewing
860864
const handleFileResolveWrapper = () => {
861865
handleFileResolve(activeIssue.fileData)
@@ -1156,7 +1160,9 @@ const getSectionPostOptions = (newFile, sectionReferences) => {
11561160
<button
11571161
className='btn btn-small btn-icon-left review-files-delete-button'
11581162
tabIndex='0'
1159-
disabled={deleteFileQueue.length === 0}>
1163+
disabled={deleteFileQueue.length === 0}
1164+
onClick={deleteSelectedFiles}
1165+
>
11601166
<DeleteIcon className="icon-sm" />
11611167
<div className="flex-column justify-content-center">{t('files.button.delete_selected')}</div>
11621168
</button>

assets/js/Services/Api.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export default class Api {
1212
reviewFile: '/api/files/{file}/review',
1313
postFile: '/api/files/{file}/post',
1414
deleteFile: '/api/files/{file}/delete',
15+
batchDelete: 'api/files/delete',
1516
updateContent: '/api/content',
1617
reportPdf: '/download/courses/{course}/reports/pdf',
1718
adminCourses: '/api/admin/courses/account/{account}/term/{term}',
@@ -184,6 +185,23 @@ export default class Api {
184185

185186
}
186187

188+
batchDelete(urlList) {
189+
const authToken = this.getAuthToken()
190+
let url = `${this.apiUrl}${this.endpoints.batchDelete}`
191+
192+
return fetch(url, {
193+
method: 'DELETE',
194+
headers: {
195+
'X-AUTH-TOKEN': authToken,
196+
},
197+
body: JSON.stringify({
198+
paths: urlList
199+
})
200+
})
201+
202+
203+
}
204+
187205
updateContent(contentOptions, sectionOptions){
188206
const authToken = this.getAuthToken()
189207
let url = `${this.apiUrl}${this.endpoints.updateContent}`

src/Controller/FileItemsController.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,4 +186,20 @@ public function deleteFile(FileItem $file, UtilityService $util, LmsPostService
186186

187187
return new JsonResponse($apiResponse);
188188
}
189+
190+
#[Route('/api/files/delete', methods: ['DELETE'], name: 'delete_files')]
191+
public function batchDeleteFiles(Request $request, UtilityService $util, LmsPostService $lmsPost, LmsFetchService $lmsFetch){
192+
$apiResponse = new ApiResponse();
193+
$user = $this->getUser();
194+
try{
195+
$content= \json_decode($request->getContent(), true);
196+
$paths = $content['paths'];
197+
$apiResponse = $lmsPost->batchDeleteFromLms($paths, $user);
198+
}
199+
catch (\Exception $e) {
200+
$apiResponse->addError($e->getMessage());
201+
}
202+
203+
return new JsonResponse($apiResponse);
204+
}
189205
}

src/Lms/Canvas/CanvasLms.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -553,6 +553,17 @@ public function updateFileItem(Course $course, $file)
553553
return $fileItem;
554554
}
555555

556+
public function batchDeleteContent($paths) {
557+
$user = $this->security->getUser();
558+
$apiDomain = $this->getApiDomain($user);
559+
$apiToken = $this->getApiToken($user);
560+
561+
$canvasApi = new CanvasApi($apiDomain, $apiToken);
562+
563+
return $canvasApi->apiDeleteBatch($paths);
564+
565+
}
566+
556567
public function updateContentItem(ContentItem $contentItem)
557568
{
558569
$user = $this->security->getUser();

src/Services/LmsPostService.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,21 @@ public function deleteFileFromLms(FileItem $file, User $user){
9090
}
9191
}
9292

93+
public function batchDeleteFromLms($paths, $user){
94+
$lms = $this->lmsApi->getLms();
95+
$this->lmsUser->validateApiKey($user);
96+
97+
try{
98+
return $lms->batchDeleteContent($paths);
99+
}
100+
catch(\Exception){
101+
$this->util->createMessage('Failed to download unused files.', 'error');
102+
return;
103+
}
104+
105+
106+
}
107+
93108
public function saveFileToLms(FileItem $file, UploadedFile $uploadedFile, User $user)
94109
{
95110
$lms = $this->lmsApi->getLms();

0 commit comments

Comments
 (0)