From 65e33ba26487969f7d9d8b67810ee136b4d6ec1c Mon Sep 17 00:00:00 2001 From: Patrik Zander Date: Thu, 24 Oct 2024 13:09:13 +0200 Subject: [PATCH] Remove some unused options --- .../app/shared/http/file-uploader.service.ts | 44 +++++++++++++------ 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/src/main/webapp/app/shared/http/file-uploader.service.ts b/src/main/webapp/app/shared/http/file-uploader.service.ts index a6378198302a..f3cb6247afdc 100644 --- a/src/main/webapp/app/shared/http/file-uploader.service.ts +++ b/src/main/webapp/app/shared/http/file-uploader.service.ts @@ -1,5 +1,5 @@ import { HttpClient } from '@angular/common/http'; -import { Injectable } from '@angular/core'; +import { Injectable, inject } from '@angular/core'; import { MAX_FILE_SIZE } from 'app/shared/constants/input.constants'; import { lastValueFrom } from 'rxjs'; import { UPLOAD_MARKDOWN_FILE_EXTENSIONS } from 'app/shared/constants/file-extensions.constants'; @@ -8,24 +8,42 @@ export interface FileUploadResponse { path?: string; } -type Options = { - keepFileName: boolean; -}; - @Injectable({ providedIn: 'root' }) export class FileUploaderService { + private readonly http = inject(HttpClient); readonly acceptedMarkdownFileExtensions = UPLOAD_MARKDOWN_FILE_EXTENSIONS; - constructor(private http: HttpClient) {} /** * Uploads a file for the markdown editor to the server. * @param file The file to upload - * @param fileName The name of the file - * @param options The options dictionary (e.g, { keepFileName: true }) * @return A promise with the response from the server or an error */ - uploadMarkdownFile(file: Blob | File, fileName?: string, options?: Options): Promise { - const fileExtension = fileName ? fileName.split('.').pop()!.toLocaleLowerCase() : (file as File).name.split('.').pop()!.toLocaleLowerCase(); + uploadMarkdownFile(file: File): Promise { + const fileExtension = file.name.split('.').pop()!.toLocaleLowerCase(); + if (!this.acceptedMarkdownFileExtensions.includes(fileExtension)) { + return Promise.reject( + new Error( + 'Unsupported file type! Only the following file extensions are allowed: ' + this.acceptedMarkdownFileExtensions.map((extension) => `.${extension}`).join(', '), + ), + ); + } + + if (file.size > MAX_FILE_SIZE) { + return Promise.reject(new Error('File is too big! Maximum allowed file size: ' + MAX_FILE_SIZE / (1024 * 1024) + ' MB.')); + } + + const formData = new FormData(); + formData.append('file', file, file.name); + return lastValueFrom(this.http.post(`/api/markdown-file-upload?keepFileName=${false}`, formData)); + } + + uploadMarkdownFileInCurrentMetisConversation(file: File, courseId: number | undefined, conversationId: number | undefined): Promise { + if (!courseId || !conversationId) { + return Promise.reject(new Error(`No course or conversation available for the file upload.`)); + } + + // TODO refactor + const fileExtension = (file as File).name.split('.').pop()!.toLocaleLowerCase(); if (!this.acceptedMarkdownFileExtensions.includes(fileExtension)) { return Promise.reject( new Error( @@ -34,13 +52,13 @@ export class FileUploaderService { ); } + // TODO: adjust file size if (file.size > MAX_FILE_SIZE) { return Promise.reject(new Error('File is too big! Maximum allowed file size: ' + MAX_FILE_SIZE / (1024 * 1024) + ' MB.')); } - const keepFileName = !!options?.keepFileName; const formData = new FormData(); - formData.append('file', file, fileName); - return lastValueFrom(this.http.post(`/api/markdown-file-upload?keepFileName=${keepFileName}`, formData)); + formData.append('file', file, file.name); + return lastValueFrom(this.http.post(`/api/files/courses/${courseId}/conversations/${conversationId}`, formData)); } }