vshymanskyy / ViperIDE

An innovative MicroPython / CircuitPython IDE for Web and Mobile
https://viper-ide.org
MIT License
402 stars 16 forks source link

Implement settings save/load to local storage #45

Open RobertBlackhart opened 1 month ago

RobertBlackhart commented 1 month ago

This change implements settings save and load to the browser's local storage (request from vshymanskyy/ViperIDE#25). It also implements some helper getter/setter functions for using in other parts of the code without those other parts needing to be aware of how the settings work (e.g. needing to know to query the DOM). And it allows for setting up callbacks to listen for setting changes.

The settings are stored as a single serialized JSON blob in the storage. This made it a bit easier to load and save non-string values. It's maybe a little more difficult to reset or change a single setting in the dev tools, but I thought the trade-off was worth it.

image