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 ConnectionMethod { http, https }
enum SelectedTheme { system, light, dark } enum SelectedTheme { system, light, dark }
enum AuthResult { success, invalidToken, other }

View File

@@ -4,9 +4,9 @@
/// To regenerate, run: `dart run slang` /// To regenerate, run: `dart run slang`
/// ///
/// Locales: 2 /// 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 // coverage:ignore-file
// ignore_for_file: type=lint // ignore_for_file: type=lint
@@ -201,6 +201,7 @@ class _StringsOnboardingEn {
String get connect => 'Connect'; String get connect => 'Connect';
String get connecting => 'Connecting...'; String get connecting => 'Connecting...';
String get cannotConnectToServer => 'Cannot connect to the server.'; String get cannotConnectToServer => 'Cannot connect to the server.';
String get invalidToken => 'Invalid token.';
} }
// Path: links // Path: links
@@ -450,6 +451,7 @@ class _StringsOnboardingEs implements _StringsOnboardingEn {
@override String get connect => 'Conectar'; @override String get connect => 'Conectar';
@override String get connecting => 'Conectando...'; @override String get connecting => 'Conectando...';
@override String get cannotConnectToServer => 'No se puede conectar con el servidor.'; @override String get cannotConnectToServer => 'No se puede conectar con el servidor.';
@override String get invalidToken => 'Token no válido.';
} }
// Path: links // Path: links
@@ -656,6 +658,7 @@ extension on Translations {
case 'onboarding.connect': return 'Connect'; case 'onboarding.connect': return 'Connect';
case 'onboarding.connecting': return 'Connecting...'; case 'onboarding.connecting': return 'Connecting...';
case 'onboarding.cannotConnectToServer': return 'Cannot connect to the server.'; case 'onboarding.cannotConnectToServer': return 'Cannot connect to the server.';
case 'onboarding.invalidToken': return 'Invalid token.';
case 'links.links': return 'Links'; case 'links.links': return 'Links';
case 'links.dates.todayAt': return ({required Object time}) => 'Today, ${time}'; case 'links.dates.todayAt': return ({required Object time}) => 'Today, ${time}';
case 'links.dates.yesterdayAt': return ({required Object time}) => 'Yesterday, ${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.connect': return 'Conectar';
case 'onboarding.connecting': return 'Conectando...'; case 'onboarding.connecting': return 'Conectando...';
case 'onboarding.cannotConnectToServer': return 'No se puede conectar con el servidor.'; 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.links': return 'Enlaces';
case 'links.dates.todayAt': return ({required Object time}) => 'Hoy, ${time}'; case 'links.dates.todayAt': return ({required Object time}) => 'Hoy, ${time}';
case 'links.dates.yesterdayAt': return ({required Object time}) => 'Ayer, ${time}'; case 'links.dates.yesterdayAt': return ({required Object time}) => 'Ayer, ${time}';

View File

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

View File

@@ -29,7 +29,8 @@
"testConnectionUrl": "Probar URL de conexión", "testConnectionUrl": "Probar URL de conexión",
"connect": "Conectar", "connect": "Conectar",
"connecting": "Conectando...", "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": {
"links": "Enlaces", "links": "Enlaces",

View File

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

View File

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

View File

@@ -1,5 +1,6 @@
import 'package:dio/dio.dart'; import 'package:dio/dio.dart';
import 'package:linkdy/constants/enums.dart';
import 'package:linkdy/models/api_response.dart'; import 'package:linkdy/models/api_response.dart';
import 'package:linkdy/models/data/bookmarks.dart'; import 'package:linkdy/models/data/bookmarks.dart';
import 'package:linkdy/models/data/check_bookmark.dart'; import 'package:linkdy/models/data/check_bookmark.dart';
@@ -16,12 +17,17 @@ class ApiClientService {
required this.dioInstance, required this.dioInstance,
}); });
Future<bool> checkConnectionInstance() async { Future<AuthResult> checkConnectionInstance() async {
try { try {
await dioInstance.get("/bookmarks/?limit=1"); 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) { } catch (e) {
return false; return AuthResult.other;
} }
} }