diff --git a/RomRepoMgr.Blazor/Components/Dialogs/ImportRoms.razor.cs b/RomRepoMgr.Blazor/Components/Dialogs/ImportRoms.razor.cs index d64e07e..4d64f54 100644 --- a/RomRepoMgr.Blazor/Components/Dialogs/ImportRoms.razor.cs +++ b/RomRepoMgr.Blazor/Components/Dialogs/ImportRoms.razor.cs @@ -327,6 +327,9 @@ public partial class ImportRoms : ComponentBase if(!archiveImporter.IsCrcInDb(reader.Entry.Crc) && KnownOnlyChecked) continue; + // Do not import files that are already in the repository + if(archiveImporter.IsInRepo(reader.Entry.Crc)) continue; + var worker = new FileImporter(_ctx, _newFiles, _newDisks, diff --git a/RomRepoMgr.Core/Workers/FileImporter.cs b/RomRepoMgr.Core/Workers/FileImporter.cs index e9ab92f..402a0de 100644 --- a/RomRepoMgr.Core/Workers/FileImporter.cs +++ b/RomRepoMgr.Core/Workers/FileImporter.cs @@ -556,6 +556,14 @@ public sealed class FileImporter } } + public bool IsInRepo(long crc32) + { + lock(DbLock) + { + return _ctx.Files.Any(f => f.Crc32 == crc32.ToString("x8") && f.IsInRepo); + } + } + public void ImportAndHashRom(Stream stream, string filename, string tempPath, long size) { try diff --git a/RomRepoMgr/ViewModels/ImportRomFolderViewModel.cs b/RomRepoMgr/ViewModels/ImportRomFolderViewModel.cs index 8ead91d..b75e0b9 100644 --- a/RomRepoMgr/ViewModels/ImportRomFolderViewModel.cs +++ b/RomRepoMgr/ViewModels/ImportRomFolderViewModel.cs @@ -410,6 +410,9 @@ public sealed partial class ImportRomFolderViewModel : ViewModelBase if(!archiveImporter.IsCrcInDb(reader.Entry.Crc) && KnownOnlyChecked) continue; + // Do not import files that are already in the repository + if(archiveImporter.IsInRepo(reader.Entry.Crc)) continue; + var model = new RomImporter { Filename = Path.GetFileName(reader.Entry.Key),