forked from Nexus/nexus
Rips out the old auth method, adds OAuth support. Fixes #51. Tested Platforms: - [x] Linux - [x] Flatpak - [x] Native (Nix) - [x] Android - [ ] Windows - [ ] MacOS Reviewed-on: Nexus/nexus#53
33 lines
1,018 B
Dart
33 lines
1,018 B
Dart
import "package:flutter_riverpod/flutter_riverpod.dart";
|
|
import "package:nexus/controllers/client.dart";
|
|
|
|
class ClientIdController extends AsyncNotifier<String> {
|
|
final Uri homeserver;
|
|
ClientIdController(this.homeserver);
|
|
|
|
@override
|
|
Future<String> build() => ref
|
|
.watch(ClientController.provider.notifier)
|
|
.registerClient(
|
|
.new(
|
|
clientName: "Nexus",
|
|
applicationType: .native,
|
|
grantTypes: .new([.authorizationCode, .refreshToken]),
|
|
responseTypes: .new([.code]),
|
|
logoUri: Uri.https(
|
|
"nexus.federated.nexus",
|
|
"raw/branch/main/assets/mobile.svg",
|
|
),
|
|
homeserverUrl: homeserver,
|
|
clientUri: Uri.https("nexus.federated.nexus"),
|
|
redirectUris: .new([
|
|
.new(scheme: "nexus.federated.nexus", path: "/"),
|
|
]),
|
|
),
|
|
);
|
|
|
|
static final provider =
|
|
AsyncNotifierProvider.family<ClientIdController, String, Uri>(
|
|
ClientIdController.new,
|
|
);
|
|
}
|