Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 2x 2x 2x | import { Injectable } from "@angular/core" import { Store } from "@ngrx/store" import { LoadFileService } from "../../../services/loadFile/loadFile.service" import { setIsLoadingFile } from "../../../state/store/appSettings/isLoadingFile/isLoadingFile.actions" import { setIsLoadingMap } from "../../../state/store/appSettings/isLoadingMap/isLoadingMap.actions" import { CustomConfigHelper, CUSTOM_CONFIG_FILE_EXTENSION } from "../../../util/customConfigHelper" import { getCCFileAndDecorateFileChecksum } from "../../../util/fileHelper" import { createCCFileInput } from "../../../util/uploadFiles/createCCFileInput" import { readFiles } from "../../../util/uploadFiles/readFiles" @Injectable({ providedIn: "root" }) export class UploadFilesService { isUploading = false constructor( private store: Store, private loadFileService: LoadFileService ) {} uploadFiles() { const ccFileInput = createCCFileInput() ccFileInput.addEventListener("change", () => { void this.uploadFilesOnEvent(ccFileInput) }) ccFileInput.click() } private async uploadFilesOnEvent(ccFileInput: HTMLInputElement) { try { this.isUploading = true this.store.dispatch(setIsLoadingFile({ value: true })) this.store.dispatch(setIsLoadingMap({ value: true })) const plainFileContents = await Promise.all(readFiles(ccFileInput.files)) const { customConfigs, ccFiles } = this.splitCustomConfigsAndCCFiles(ccFileInput.files, plainFileContents) for (const customConfig of customConfigs) { CustomConfigHelper.importCustomConfigs(customConfig) } Iif (ccFiles.length > 0) { this.loadFileService.loadFiles(ccFiles) } } catch { this.store.dispatch(setIsLoadingFile({ value: false })) this.store.dispatch(setIsLoadingMap({ value: false })) } finally { this.isUploading = false } } private splitCustomConfigsAndCCFiles(fileList: FileList, contents: string[]) { const customConfigs = [] const ccFiles = [] for (const [index, content] of contents.entries()) { const fileName = fileList[index].name if (fileName.includes(CUSTOM_CONFIG_FILE_EXTENSION)) { customConfigs.push(content) } else { ccFiles.push({ fileName, fileSize: fileList[index].size, content: getCCFileAndDecorateFileChecksum(content) }) } } return { customConfigs, ccFiles } } } |