Plugins: Expose the marketplace URL as an app setting - #907
Open
Bas1874 wants to merge 1 commit into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
The marketplace URL is stored in localStorage, so the server never knows what it is and plugins can't read or change it without DOM.
This moves it into the app settings as extensions.marketplaceUrl. Plugins can then use ctx.appSettings with the existing settings scope, no new permission needed. The extensions page reads it from the server now and migrates the old localStorage value on first load.
Two related fixes while I was in there: the settings permission prompt only showed the path being written, not the value, and the prompt cache was keyed on the path alone, so approving one value let a plugin write any other value to the same path without asking again.
Validation runs in db.UpsertSettings since every write path goes through it.
Tested locally with a small plugin that flips the URL from a tray button. seemed to work fine. Let me know if anything needs changing :D
one small issue might be that
PATCH /settings/pathcallsInitOrRefreshModules(), which is heavy for a single URL change. Ireused the endpoint rather than adding another one, let me know if you want that differently.
Used AI assistance for spelling. and to create the testing plugins. and small tweaks
For issue #849
Checklist
CONTRIBUTING.md