Use requestData resources in UserPreferences #1064
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.
Right now, the
UserPreferences
class sends requests using thehttp
object incontainer
. However, the more typical pattern is for requests to be sent via arequestData
resource. It wasn't easy before to do so inUserPreferences
, but I've made some improvements torequestData
to make that possible (#1050, #1051).Right now,
UserPreferences
manually callswithAuth()
. It also has to manage request cancelation. Those are both things thatrequestData
already knows how to do.This PR also removes
navigator.locks
. It closes #1044.What has been done to verify that this works as intended?
We don't yet have automated tests around user preferences: see #1049. However, I'll do a quick check of the behavior before merging the PR.
@getodk/testers, could you please check the user preference functionality during regression testing? (Maybe you were planning to already.) This PR makes changes to the underlying code, so it'd be good to verify that everything still works as expected.
Why is this the best possible solution? Were any other approaches considered?
One reason maybe not to use
requestData
resources is that resources have reactive state, and nothing about theUserPreferences.prototype.#propagate()
method requires reactivity. However, I think it's fine for there to be a little extra reactivity: I don't expect there to be performance problems due to that. Overall, I think it's clearer to reuse the typical pattern of usingrequestData
resources to send requests.Before submitting this PR, please make sure you have:
npm run test
andnpm run lint
and confirmed all checks still pass OR confirm CircleCI build passes