♻️ Better http client management, no more expired token

This commit is contained in:
2024-06-06 20:49:18 +08:00
parent d1a8793550
commit ce15944018
26 changed files with 96 additions and 152 deletions

View File

@ -3,7 +3,6 @@ import 'package:get/get.dart';
import 'package:solian/exts.dart';
import 'package:solian/models/realm.dart';
import 'package:solian/providers/auth.dart';
import 'package:solian/services.dart';
class RealmDeletionDialog extends StatefulWidget {
final Realm realm;
@ -22,15 +21,13 @@ class RealmDeletionDialog extends StatefulWidget {
class _RealmDeletionDialogState extends State<RealmDeletionDialog> {
bool _isBusy = false;
Future<void> deleteChannel() async {
Future<void> deleteRealm() async {
final AuthProvider auth = Get.find();
if (!await auth.isAuthorized) return;
setState(() => _isBusy = true);
final client = GetConnect(maxAuthRetries: 3);
client.httpClient.baseUrl = ServiceFinder.services['passport'];
client.httpClient.addAuthenticator(auth.requestAuthenticator);
final client = auth.configureClient(service: 'passport');
final resp = await client.delete('/api/realms/${widget.realm.id}');
if (resp.statusCode != 200) {
@ -42,15 +39,13 @@ class _RealmDeletionDialogState extends State<RealmDeletionDialog> {
setState(() => _isBusy = false);
}
Future<void> leaveChannel() async {
Future<void> leaveRealm() async {
final AuthProvider auth = Get.find();
if (!await auth.isAuthorized) return;
setState(() => _isBusy = true);
final client = GetConnect(maxAuthRetries: 3);
client.httpClient.baseUrl = ServiceFinder.services['passport'];
client.httpClient.addAuthenticator(auth.requestAuthenticator);
final client = auth.configureClient(service: 'passport');
final resp =
await client.delete('/api/realms/${widget.realm.id}/members/me');
@ -80,8 +75,8 @@ class _RealmDeletionDialogState extends State<RealmDeletionDialog> {
onPressed: _isBusy
? null
: widget.isOwned
? deleteChannel
: leaveChannel,
? deleteRealm
: leaveRealm,
child: Text('confirm'.tr),
),
],

View File

@ -37,8 +37,7 @@ class _RealmMemberListPopupState extends State<RealmMemberListPopup> {
void getMembers() async {
setState(() => _isBusy = true);
final client = GetConnect(maxAuthRetries: 3);
client.httpClient.baseUrl = ServiceFinder.services['passport'];
final client = ServiceFinder.configureClient('passport');
final resp = await client.get('/api/realms/${widget.realm.alias}/members');
if (resp.statusCode == 200) {
@ -73,9 +72,7 @@ class _RealmMemberListPopupState extends State<RealmMemberListPopup> {
setState(() => _isBusy = true);
final client = GetConnect(maxAuthRetries: 3);
client.httpClient.baseUrl = ServiceFinder.services['passport'];
client.httpClient.addAuthenticator(auth.requestAuthenticator);
final client = auth.configureClient(service: 'passport');
final resp = await client.post(
'/api/realms/${widget.realm.alias}/members',
@ -96,9 +93,7 @@ class _RealmMemberListPopupState extends State<RealmMemberListPopup> {
setState(() => _isBusy = true);
final client = GetConnect(maxAuthRetries: 3);
client.httpClient.baseUrl = ServiceFinder.services['passport'];
client.httpClient.addAuthenticator(auth.requestAuthenticator);
final client = auth.configureClient(service: 'passport');
final resp = await client.request(
'/api/realms/${widget.realm.alias}/members',