Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GameImporter Rewrite #2358

Open
wants to merge 30 commits into
base: develop
Choose a base branch
from
Open

Conversation

proskd
Copy link
Contributor

@proskd proskd commented Nov 6, 2024

Remaining work before merging:

  • 1. Tons of code clean up
  • 2. Proper handling of conflicts
  • 3. Proper handling of CDROMs (need to sort to handle M3U -> Cue -> Bin)
  • 4. Proper handling of directories
  • 5. Unit tests where applicable
  • 6. Ensure validity of imports that flow through this new system.
  • 7. UI for Conflict handling
  • 8. Validate that archives work properly.
  • 9. Validate and fix Artwork

What does this PR do

  • Total Rewrite of GameImporter logic, including separation of concerns where possible
  • Introduces UI to display progress of imports

Where should the reviewer start

How should this be manually tested

Test all types of imports including

  1. Basic ROM
  2. CDROM
  3. Directory
  4. Zip
  5. BIOS
  6. Artwork
  7. Conflicts

Any background context you want to provide

What are the relevant tickets

Screenshots (important for UI changes)

Questions

… imports

This commit adds the import status screen and connects it to a not-yet-used queue to manage the state of imports.
…n to strange everything through the import queue
1.  Introducing a robust ImportQueueItem to track an import and follow it through the system
2.  Refactored code to extract behaviors out of GameImporter so it's not a god class
3.  Pre compute as much as possible for an ImportQueueItem, such as which systems are valid.
4.  Try to simplify the general logic to 3 steps - compute, move, and import into the DB

Remaining work

1.  Tons of code clean up
2.  Proper handling of conflicts
3.  Proper handling of CDROMs (need to sort to handle M3U -> Cue -> Bin)
4.  Proper handling of directories
5.  Unit tests where applicable
6.  Ensure validity of imports that flow through this new system.
7.  UI for Conflict handling
8.  Validate that archives work properly.
9.  Validate and fix Artwork
…portQueueItem can now contain Children. We also now check the queue (and any child items in the queue) for duplicates. next step is to pre-process the queue to fix up or detect CDRoms properly.
…lated files, if they're in the queue. this will make it easy to move files to the right place all at once later in the process
…for being able to test a basic import through the system
…er. ideally that's a utility that need not live here
…t be sure of the right system.

conflicts are now properly detected and moved to the conflicts folder, and shown in UI
if a conflict is detected, user can tap to enter SystemSelectionView which offers up valid systems
tapping an item will update that ImportItem's targetSystem so hopefully import works after that.
fix case where looking up in openvgb finds a match - we handle this correctly now.
adds in a crucial preProcessQueue step to ensure the queue handles cue/bin files correctly
remove extraneous view model in ImportStatusView
Fixes some bad cases for CDROMs where child items weren't copied to the correct folder
Added some more logging in GameImporter
…stem when identified, and "BIOS" for bios (since that was crashing for some reason)
@proskd proskd marked this pull request as ready for review November 11, 2024 02:21
@proskd proskd requested a review from JoeMatt as a code owner November 11, 2024 02:21
@proskd
Copy link
Contributor Author

proskd commented Nov 11, 2024

This PR is ready for review, but has 3 remaining issues:

  1. There are some random Realm threading crashes - MOST IMPORTANT
  2. We need a place in the code where we can begin processing the queue after files settle.
  3. The ImportStatusView and other views aren't themed.

This PR doesn't support tvOS as far as I know so we will need to add that later.

@proskd proskd changed the title WIP - GameImporter Rewrite - DO NOT MERGE GameImporter Rewrite Nov 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant