Repository navigation
Conversation
When the Tidepool session is dropped (for example after the refresh token is rejected), the service raises an "authentication-needed" alert, but two things went wrong afterwards: - Nothing retracted that alert once the user logged in again. Retract it when a session arrives after having none. - On the next launch, init?(rawState:) failed because the keychain had no session: getSession threw errSecItemNotFound and the whole service was discarded, so the user lost the Tidepool service instead of seeing that a login is needed. A missing keychain item now means no session; the settings screen already shows "You are not logged in" with a Login button.
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.
When the Tidepool session is dropped (for example when the refresh token is rejected; see tidepool-org/TidepoolKit#82),
apiDidUpdateSession(nil)raises the "authentication-needed" alert. Two things went wrong after that:init?(rawState:)reads the session from the keychain, andgetSessionthrewcopy(errSecItemNotFound)when none was stored. Init then returned nil and Loop dropped the Tidepool service, instead of showing that a login is needed. A missing keychain item now means no session. SettingsView already shows "You are not logged in" with a Login button for that state.Tests
TidepoolServiceSessionTests(mock SessionStorage and ServiceDelegate): logging out issues the alert, logging back in retracts it, and a token refresh doesn't retract it.