Make WASM use IndexedDB for data persistence #1869
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR makes WASM builds use IndexedDB in browsers, which allows much larger files to be stored. It also uses data persistence, which prevents browsers from automatically deleting progress without warning.
Custom levels done in the browser will now be saved, and the warning prompting users to download their levels will only show if data persistence has been denied.
NOTE: Data persistence requires special permission from the browser. While searching, I found that although Firefox does this normally and asks users if they want data to persist, Chrome and Chromium-based browsers (Edge, Opera, Brave, etc.) decide by themselves which websites they consider important, and will never prompt the user to ask for preference.
Since users using those browsers will never be able to choose if they want their data saved or not, I added a prompt to users of those browsers directing them to use Firefox as a solution.
Info can be found here: https://web.dev/persistent-storage/#how-is-permission-granted