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

Add conditional rendering to ModalCard and use the correct classes in ImportProfileModal #1428

Closed
wants to merge 32 commits into from

Conversation

VilppeRiskidev
Copy link
Collaborator

No description provided.

Copy link
Collaborator

@anttimaki anttimaki left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, but any idea why GitHub's diff flags the whole ModalCard.vue as changed? Is there a change in tabs/spaces indentation, line endings oslt?

@VilppeRiskidev
Copy link
Collaborator Author

LGTM, but any idea why GitHub's diff flags the whole ModalCard.vue as changed? Is there a change in tabs/spaces indentation, line endings oslt?

Fixed

anttimaki and others added 26 commits September 11, 2024 12:39
Test the installations and uninstallations of the package loader and a
package ("plugin").
The custom folder name of the mod loader was not listed in the paths
where the uninstallation logic looks for files. As a result, files
belonging to uninstalled mods were left in the profile directory.

Also improve some comments and misleading variable names.
Use the new approach for defining how mods should be installed instead
of the legacy way. I.e. mostly just movingthings around.

It's worth noting that this doesn't actually change what the mod
installation or uninstallation does, and what it currently does doesn't
necessary reflect how RoRR/Hades 2 communities want this specific mod
loader to work in the future.
V2 extends the original PackageInstaller by adding support for
installer specific uninstallation logic.

Having two separate versions is a bit hacky and requires the profile
installer provider to do some extra checks. However, this allows us to
add support for one installer at the time, instead of having to
implement them all at once.
Uninstalling a mod using ReturnofModding should remove the plugins_data
subdir. However, if it contains a cache subdir, the contents of that
subdir are kept, while rest of the content is removed.

This is done as a way to persist some of the data created by the plugin
when the mod is updated, since the update process uninstalls the old
version before the new one is installed. The behaviour is documented at
https://github.com/xiaoxiao921/ReturnOfModdingBase/tree/master?tab=readme-ov-file#plugins_data
- Actually rename the leaf item of the path
- Throw error if source file/dir and target path don't exists to be in
  line with Node's rename()
- Throw error if attempting to rename an item at the root of mocked
  file system. Rename (and other methods) assume there's some form of
  dir structure. Fixing this would be too much work now, so just
  document the "feature"
- Changing the state of the mod loader does nothing, which is in line
  with what BepInEx does, so I guess it's okay
- Disabling a mod renames the plugin's files to have .old file
  extension and enabling a mod undoes this
- The change also affects games using InstallRuleInstaller with the
  SUBDIR_NO_FLATTEN tracking method, making it match the functionality
  SUBDIR tracking method already had
Wrong argument passed to Vuex action silently skipped calling
ConflictManagementProvider.resolveConflicts()
This commit primarily implements a way to track settings without
requiring each game to exist as an independent table. This is done by,
simply, moving everything to a new `games` table, by which each game is
a row, indexable by each's setting identifier.

This commit also removes code that migrated the legacy settings store to
v2, but don't fret, I've replaced it with migration code that converts
v2 game tables to the new v3 row entries.

feat: add legacy table clear, remove old migration code

chore: resolve PR review comments
- Replace occurences of `==` with customary `===`.
- Remove transaction wrapper from `applyV2ToV3Migration`
- Invert logic of `getLatestGameSpecific` to reduce nesting and catch
  case where `game === undefined` and `applyV2ToV3Migration === true`.

feat: move migration code to `Version.upgrade`

This should ideally handle the migration from < 75 versions to 75
automatically at runtime, thus removing the need to integrate the
migration routine into `getLatestGameSpecific`.

Legacy game tables are not entirely removed, but they are cleared
and, thanks to `Version.upgrade`, should not cause any future problems.

chore: code cleanup - remove trailing whitespace, imports, debug log
- TODO: clean up old create profile stuff from Profiles.vue,
 which is easier to do with the refactoring of the Import module
 as the two were somewhat convoluted.
Based on code review feedback, implement the uninstallation methods as
optional methods, rather than have a separate version of the abstract
class with more abstract methods.

Replace the approach with abstract classes and methods with a plain
TypeScript interface because having optional methods in abstract
classes seems poorly supported in TypeScript.
Create a new provider for handling changing the data folder. This
shouldn't affect the functionality for r2mm, but allows tsmm to fix the
feature on their end.

As a bonus it moves the related logic from the bloated Manager
component.
Version bumping the settings storage is no longer needed for regular
game additions.
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.

4 participants