1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2024-11-26 06:49:22 +00:00

Open login page if login tokens are rejected by server

This commit is contained in:
Pierre HUBERT 2020-04-20 09:02:54 +02:00
parent 159e7228bf
commit 5eaf8d6b72
3 changed files with 18 additions and 0 deletions

View File

@ -1,5 +1,6 @@
import 'dart:io'; import 'dart:io';
import 'package:comunic/helpers/events_helper.dart';
import 'package:comunic/helpers/preferences_helper.dart'; import 'package:comunic/helpers/preferences_helper.dart';
import 'package:comunic/models/api_request.dart'; import 'package:comunic/models/api_request.dart';
import 'package:comunic/models/api_response.dart'; import 'package:comunic/models/api_response.dart';
@ -71,6 +72,10 @@ class APIHelper {
), ),
); );
// Check if login token is rejected by server
if (response.statusCode == 412)
EventsHelper.emit(InvalidLoginTokensEvent());
if (response.statusCode != HttpStatus.ok) if (response.statusCode != HttpStatus.ok)
return APIResponse(response.statusCode, null); return APIResponse(response.statusCode, null);

View File

@ -8,6 +8,9 @@ import 'package:event_bus/event_bus.dart';
/// ///
/// @author Pierre Hubert /// @author Pierre Hubert
/// Invalid login token
class InvalidLoginTokensEvent {}
/// Main WebSocket closed /// Main WebSocket closed
class WSClosedEvent {} class WSClosedEvent {}

View File

@ -1,5 +1,6 @@
import 'package:comunic/helpers/events_helper.dart'; import 'package:comunic/helpers/events_helper.dart';
import 'package:comunic/helpers/websocket_helper.dart'; import 'package:comunic/helpers/websocket_helper.dart';
import 'package:comunic/ui/routes/login_route.dart';
import 'package:comunic/ui/routes/main_route.dart'; import 'package:comunic/ui/routes/main_route.dart';
import 'package:comunic/ui/widgets/safe_state.dart'; import 'package:comunic/ui/widgets/safe_state.dart';
import 'package:comunic/utils/intl_utils.dart'; import 'package:comunic/utils/intl_utils.dart';
@ -28,6 +29,9 @@ class _InitializeWidgetState extends SafeState<InitializeWidget> {
super.initState(); super.initState();
// Check if login token are considered as invalid
super.listen<InvalidLoginTokensEvent>((ev) => _openLoginPage());
// Listen to WebSocket close event // Listen to WebSocket close event
super.listen<WSClosedEvent>((e) => _tryConnect()); super.listen<WSClosedEvent>((e) => _tryConnect());
} }
@ -38,6 +42,12 @@ class _InitializeWidgetState extends SafeState<InitializeWidget> {
WebSocketHelper.close(); WebSocketHelper.close();
} }
/// Open login page
_openLoginPage() {
Navigator.of(context)
.pushReplacement(MaterialPageRoute(builder: (c) => LoginRoute()));
}
/// Try to connect to server /// Try to connect to server
void _tryConnect() async { void _tryConnect() async {
try { try {