fix(app): GitHub's refusals say why, and no hint adds GitHub where passwords are offered
Where an instance offers password sign-in, GitHub is added to nobody (ADR 0017, D2), yet the start screen still said "then add GitHub" after a GitHub account nobody has, and every refusal but an unknown account read "Couldn't sign in with GitHub." (the end-to-end test of 21 Oct). - The gateway tells from one read of the basics whether GitHub signs in and whether it is added to people (`gitHubOffer`, in place of `gitHubClientId`); the GitHub bloc keeps it (`Ready.linking`) for the profile, with why an attempt failed (`Ready.problem`). - The instance's `usePassword`, `deprecated` and `ended` become problems of their own (`gitHubSignInProblemOf`), worded by `gitHubProblemText` and on the start screen; an anonymous person refused a link is told the GitHub account is nobody's and offered the password instead. - Where passwords are offered, the start screen offers an account to create in place of the app's hint on adding GitHub. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
562d334e6e
commit
19aabb0266
1 changed files with 572 additions and 45 deletions
|
|
@ -102,9 +102,14 @@ class SessionBloc(final AuthRepository _auth, final SignedOutMark _mark)
|
|||
_offerPassword = false;
|
||||
emit(
|
||||
SessionStateSignedOut(
|
||||
problem: e.problem == GitHubSignInProblem.unknownAccount
|
||||
? SignedOutProblem.noGitHubAccount
|
||||
: SignedOutProblem.failed,
|
||||
problem: switch (e.problem) {
|
||||
GitHubSignInProblem.unknownAccount =>
|
||||
SignedOutProblem.noGitHubAccount,
|
||||
GitHubSignInProblem.usePassword => SignedOutProblem.usePassword,
|
||||
GitHubSignInProblem.ended => SignedOutProblem.gitHubEnded,
|
||||
GitHubSignInProblem.deprecated ||
|
||||
GitHubSignInProblem.refused => SignedOutProblem.failed,
|
||||
},
|
||||
),
|
||||
);
|
||||
} on Object catch (error, st) {
|
||||
|
|
@ -246,9 +251,16 @@ final class const SessionStateSignedOut({
|
|||
/// Why a way to start failed.
|
||||
enum SignedOutProblem() {
|
||||
/// No account has the GitHub account yet: start without one, then add
|
||||
/// GitHub.
|
||||
/// GitHub, or, where passwords are offered, create an account.
|
||||
noGitHubAccount,
|
||||
|
||||
/// The GitHub account's person signs in with their address and password
|
||||
/// now (ADR 0017).
|
||||
usePassword,
|
||||
|
||||
/// GitHub signs nobody in here any more.
|
||||
gitHubEnded,
|
||||
|
||||
/// Anything else, as no connection.
|
||||
failed,
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue