Verify state on login

This fixes "already logged in errors" if you started logging in before cancelling, and then trying again.
This commit is contained in:
Henry Hiles 2026-07-22 21:53:42 -04:00
commit 51430d2830
Signed by: Henry-Hiles
SSH key fingerprint: SHA256:VKQUdS31Q90KvX7EkKMHMBpUspcmItAh86a+v7PGiIs
3 changed files with 17 additions and 7 deletions

View file

@ -23,10 +23,8 @@ class AuthUrlController extends AsyncNotifier<OAuthAuthCodeResponse> {
),
);
static final provider =
AsyncNotifierProvider.family<
AuthUrlController,
OAuthAuthCodeResponse,
Uri
>(AuthUrlController.new);
static final provider = AsyncNotifierProvider.family
.autoDispose<AuthUrlController, OAuthAuthCodeResponse, Uri>(
AuthUrlController.new,
);
}

View file

@ -58,6 +58,9 @@ class SelectServerPage extends HookConsumerWidget {
await ref.watch(LaunchHelper.provider).launchUrl(codeResponse.url);
AppLinks().uriLinkStream.listen((encodedUri) async {
final state = encodedUri.queryParameters["state"];
if (state != codeResponse.state) return;
final code = encodedUri.queryParameters["code"];
if (code != null) {

View file

@ -2,6 +2,7 @@ import "package:flutter/material.dart";
import "package:flutter_hooks/flutter_hooks.dart";
import "package:hooks_riverpod/hooks_riverpod.dart";
import "package:nexus/controllers/client.dart";
import "package:nexus/pages/settings.dart";
import "package:nexus/widgets/appbar.dart";
import "package:nexus/helpers/required_validator_helper.dart";
@ -32,7 +33,15 @@ class VerifyPage extends HookConsumerWidget {
}
return Scaffold(
appBar: Appbar(),
appBar: Appbar(
actions: .new([
IconButton(
onPressed: () =>
showDialog(context: context, builder: (_) => SettingsPage()),
icon: Icon(Icons.settings),
),
]),
),
body: AlertDialog(
title: Text("Verify"),
content: Form(