Handle invalid token

This commit is contained in:
Juan Gilsanz Polo
2024-02-24 01:27:17 +01:00
parent 78d793f37d
commit bb941f1973
7 changed files with 25 additions and 9 deletions

View File

@@ -3,3 +3,5 @@ enum LoadStatus { loading, loaded, error }
enum ConnectionMethod { http, https }
enum SelectedTheme { system, light, dark }
enum AuthResult { success, invalidToken, other }

View File

@@ -4,9 +4,9 @@
/// To regenerate, run: `dart run slang`
///
/// Locales: 2
/// Strings: 206 (103 per locale)
/// Strings: 208 (104 per locale)
///
/// Built on 2024-02-24 at 00:06 UTC
/// Built on 2024-02-24 at 00:26 UTC
// coverage:ignore-file
// ignore_for_file: type=lint
@@ -201,6 +201,7 @@ class _StringsOnboardingEn {
String get connect => 'Connect';
String get connecting => 'Connecting...';
String get cannotConnectToServer => 'Cannot connect to the server.';
String get invalidToken => 'Invalid token.';
}
// Path: links
@@ -450,6 +451,7 @@ class _StringsOnboardingEs implements _StringsOnboardingEn {
@override String get connect => 'Conectar';
@override String get connecting => 'Conectando...';
@override String get cannotConnectToServer => 'No se puede conectar con el servidor.';
@override String get invalidToken => 'Token no válido.';
}
// Path: links
@@ -656,6 +658,7 @@ extension on Translations {
case 'onboarding.connect': return 'Connect';
case 'onboarding.connecting': return 'Connecting...';
case 'onboarding.cannotConnectToServer': return 'Cannot connect to the server.';
case 'onboarding.invalidToken': return 'Invalid token.';
case 'links.links': return 'Links';
case 'links.dates.todayAt': return ({required Object time}) => 'Today, ${time}';
case 'links.dates.yesterdayAt': return ({required Object time}) => 'Yesterday, ${time}';
@@ -767,6 +770,7 @@ extension on _StringsEs {
case 'onboarding.connect': return 'Conectar';
case 'onboarding.connecting': return 'Conectando...';
case 'onboarding.cannotConnectToServer': return 'No se puede conectar con el servidor.';
case 'onboarding.invalidToken': return 'Token no válido.';
case 'links.links': return 'Enlaces';
case 'links.dates.todayAt': return ({required Object time}) => 'Hoy, ${time}';
case 'links.dates.yesterdayAt': return ({required Object time}) => 'Ayer, ${time}';

View File

@@ -29,7 +29,8 @@
"testConnectionUrl": "Test connection url",
"connect": "Connect",
"connecting": "Connecting...",
"cannotConnectToServer": "Cannot connect to the server."
"cannotConnectToServer": "Cannot connect to the server.",
"invalidToken": "Invalid token."
},
"links": {
"links": "Links",

View File

@@ -29,7 +29,8 @@
"testConnectionUrl": "Probar URL de conexión",
"connect": "Conectar",
"connecting": "Conectando...",
"cannotConnectToServer": "No se puede conectar con el servidor."
"cannotConnectToServer": "No se puede conectar con el servidor.",
"invalidToken": "Token no válido."
},
"links": {
"links": "Enlaces",

View File

@@ -111,9 +111,11 @@ FutureOr<bool> connectToServer(ConnectToServerRef ref) async {
final result = await apiClient.checkConnectionInstance();
processModal.close();
if (result == true) {
if (result == AuthResult.success) {
ref.read(apiClientProvider.notifier).setApiClient(apiClient);
ref.read(serverInstancesProvider.notifier).saveNewInstance(serverInstance);
} else if (result == AuthResult.invalidToken) {
showSnacbkar(label: t.onboarding.invalidToken, color: Colors.red);
} else {
showSnacbkar(label: t.onboarding.cannotConnectToServer, color: Colors.red);
}

View File

@@ -6,7 +6,7 @@ part of 'connect.provider.dart';
// RiverpodGenerator
// **************************************************************************
String _$connectToServerHash() => r'a5ff5c1030b4af6ead6fd6c4d5fdbd95c71a65cc';
String _$connectToServerHash() => r'78c2abcf7949674db5961ef644275d27c73bb000';
/// See also [connectToServer].
@ProviderFor(connectToServer)

View File

@@ -1,5 +1,6 @@
import 'package:dio/dio.dart';
import 'package:linkdy/constants/enums.dart';
import 'package:linkdy/models/api_response.dart';
import 'package:linkdy/models/data/bookmarks.dart';
import 'package:linkdy/models/data/check_bookmark.dart';
@@ -16,12 +17,17 @@ class ApiClientService {
required this.dioInstance,
});
Future<bool> checkConnectionInstance() async {
Future<AuthResult> checkConnectionInstance() async {
try {
await dioInstance.get("/bookmarks/?limit=1");
return true;
return AuthResult.success;
} on DioException catch (e) {
if (e.response != null && e.response!.statusCode == 401 || e.response!.statusCode == 403) {
return AuthResult.invalidToken;
}
return AuthResult.other;
} catch (e) {
return false;
return AuthResult.other;
}
}