Optimistic default connectivity, respect useOfflineMode if set #286
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.
There are a few PR's relating to this issue already #281 #260, but this PR simply reverts the change that ignores explicitly setting
useOfflineModein constrained or expensive network conditions to its previous logic (noted here #280 (comment)). Now ifuseOfflineModeis set it will always be respected, and only if nil will check the monitor for the proper fallback behavior.In addition to that, it relaxes the default connectivity to assume true until updated by the monitor. This will match the other defaults that were optimistic already:
There is still the case where we need a faster initial update, which I believe #259 covers well.
Regarding
isExpensiveandisConstrained, I think they are less relevant to this library and would be better off left to the developer since both cases would still be able to download a model, onlyisConnectedwill require a different code path to potentially succeed - developers can make the decision with their own monitor and UI that would warn the user, e.g. give them the option to continue if they're ok with either case. Future work here could be surfacing that to developers without throwing when there technically is connectivity.