internal Task <BoolWithMessage> ImportMapAsync(bool isReimport = false) { Task <BoolWithMessage> task = Task.Factory.StartNew(() => { string sourceFolderToCopy; if (IsZipFileImport) { if (File.Exists(PathToFileOrFolder) == false) { System.Windows.MessageBox.Show("File does not exist", "Error!", MessageBoxButton.OK, MessageBoxImage.Error); return(new BoolWithMessage(false, $"{PathToFileOrFolder} does not exist.")); } // extract files first before copying Directory.CreateDirectory(PathToTempUnzipFolder); BoolWithMessage didExtract = FileUtils.ExtractCompressedFile(PathToFileOrFolder, PathToTempUnzipFolder); if (didExtract.Result == false) { UserMessage = $"Failed to extract file: {didExtract.Message}"; return(new BoolWithMessage(false, $"Failed to extract: {didExtract.Message}.")); } sourceFolderToCopy = EnsurePathToMapFilesIsCorrect(PathToTempUnzipFolder); } else { if (Directory.Exists(PathToFileOrFolder) == false) { System.Windows.MessageBox.Show("Folder does not exist", "Error!", MessageBoxButton.OK, MessageBoxImage.Error); return(new BoolWithMessage(false, $"{PathToFileOrFolder} does not exist.")); } sourceFolderToCopy = PathToFileOrFolder; } FileUtils.CopyDirectoryRecursively(sourceFolderToCopy, SessionPath.ToContent, filesToExclude: FilesToExclude, foldersToExclude: AllStockFoldersToExclude, doContainsSearch: false); if (IsZipFileImport && Directory.Exists(PathToTempUnzipFolder)) { // remove unzipped temp files Directory.Delete(PathToTempUnzipFolder, true); } else if (isReimport == false) { // make .meta file to tag where the imported map came from to support the 'Re-import' feature string mapName = MetaDataManager.GetMapFileNameFromFolder(sourceFolderToCopy); BoolWithMessage result = MetaDataManager.TrackMapLocation(mapName, sourceFolderToCopy); } return(new BoolWithMessage(true)); }); return(task); }