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

Fix profile import silently leaving some mods uninstalled #1647

Merged
merged 1 commit into from
Feb 27, 2025

Conversation

anttimaki
Copy link
Collaborator

To reduce time spent on the splash screen, recent changes skip refreshing the online mod list if older version is found in IndexedDB cache. This means the user might have outdated mod list when importing a profile, and the manager can't import mods it doesn't know about. To mitigate the issue, a warning was added to profile preview step with an option for the user to update the mod list.

However, the warning uses the mod list in Vuex to check if a mod is available, which is a mistake since that only checks if the mod itself is known, and not whether the mod version in the profile is known. This caused recently updated mods to not always trigger the warning. The download part uses IndexedDB as its source of truth, and silently ignored the unknown mods/versions, since user has explicitly decided to import a partial profile.

To fix the issue, both parts now use IndexedDB as the source of truth.

The implementation in ImportProfileModal now somewhat akwardly handles the mod information as ExportMods (read from mods.yml and required to know which mods are disabled), ThunderstoreMods (required to use existing UI components), and ThunderstoreCombos (required to download a specific version of the mod). This could potentially be simplified but is outside the scope of this PR.

ExportMod support was dropped from TsModsModule functions to remove the footgun that caused this whole problem.

To reduce time spent on the splash screen, recent changes skip
refreshing the online mod list if older version is found in IndexedDB
cache. This means the user might have outdated mod list when importing
a profile, and the manager can't import mods it doesn't know about. To
mitigate the issue, a warning was added to profile preview step with an
option for the user to update the mod list.

However, the warning uses the mod list in Vuex to check if a mod is
available, which is a mistake since that only checks if the mod itself
is known, and not whether the mod version in the profile is known. This
caused recently updated mods to not always trigger the warning. The
download part uses IndexedDB as its source of truth, and silently
ignored the unknown mods/versions, since user has explicitly decided to
import a partial profile.

To fix the issue, both parts now use IndexedDB as the source of truth.

The implementation in ImportProfileModal now somewhat akwardly handles
the mod information as ExportMods (read from mods.yml and required to
know which mods are disabled), ThunderstoreMods (required to use
existing UI components), and ThunderstoreCombos (required to download a
specific version of the mod). This could potentially be simplified but
is outside the scope of this PR.

ExportMod support was dropped from TsModsModule functions to remove the
footgun that caused this whole problem.
@anttimaki
Copy link
Collaborator Author

@VilppeRiskidev I'm confident enough with this that I'm going to merge it unreviewed, but do a review anyway. At least it matters for the task where the online mod list refresh is automated.

@anttimaki anttimaki merged commit 08efbaf into develop Feb 27, 2025
5 checks passed
@anttimaki anttimaki deleted the fix-partial-profile-imports branch February 27, 2025 08:38
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