11import 'dart:convert' ;
22import 'dart:developer' ;
33
4+ import 'package:curl_logger_dio_interceptor/curl_logger_dio_interceptor.dart' ;
45import 'package:dio/dio.dart' ;
56import 'package:flutter_secure_storage/flutter_secure_storage.dart' ;
67import 'package:flutter_webview_plugin/flutter_webview_plugin.dart' ;
78import 'package:freecodecamp/models/main/user_model.dart' ;
9+ import 'package:pretty_dio_logger/pretty_dio_logger.dart' ;
810
911class AuthenticationService {
1012 static final AuthenticationService _authenticationService =
1113 AuthenticationService ._internal ();
1214 final FlutterSecureStorage secureStorage = const FlutterSecureStorage ();
13- final browser = FlutterWebviewPlugin ();
1415 bool isLoggedIn = false ;
1516 String _csrf = '' ;
1617 String _csrfToken = '' ;
1718 String _jwtAccessToken = '' ;
18- Dio dio = Dio ();
19+ final Dio _dio = Dio ();
1920
2021 FccUserModel ? userModel;
2122
@@ -24,6 +25,11 @@ class AuthenticationService {
2425 }
2526
2627 Future <void > init () async {
28+ _dio.options.baseUrl = 'https://api.freecodecamp.dev' ;
29+ // Below two interceptors are for debugging purposes only
30+ // They will be put behind a devMode flag later
31+ _dio.interceptors.add (PrettyDioLogger (responseBody: false ));
32+ _dio.interceptors.add (CurlLoggerDioInterceptor ());
2733 if ((await secureStorage.containsKey (key: 'jwt_access_token' )) == true &&
2834 (await secureStorage.containsKey (key: 'csrf_token' )) == true &&
2935 (await secureStorage.containsKey (key: 'csrf' )) == true ) {
@@ -33,14 +39,14 @@ class AuthenticationService {
3339 isLoggedIn = true ;
3440 fetchUser ();
3541 }
36- dio.options.baseUrl = 'https://api.freecodecamp.dev' ;
3742 }
3843
3944 void setFccUserModel (Map <String , dynamic > data) {
4045 userModel = FccUserModel .fromJson (data);
4146 }
4247
4348 Future <void > login () async {
49+ final browser = FlutterWebviewPlugin ();
4450 browser.onUrlChanged.listen ((String url) async {
4551 log ('onUrlChanged: $url ' );
4652 if (url ==
@@ -57,6 +63,7 @@ class AuthenticationService {
5763 log ('LOGGED IN' );
5864 browser.close ();
5965 fetchUser ();
66+ browser.dispose ();
6067 }
6168 });
6269 browser.launch (
@@ -81,7 +88,7 @@ class AuthenticationService {
8188 }
8289
8390 Future <Map <String , dynamic >> fetchUser () async {
84- Response res = await dio .get (
91+ Response res = await _dio .get (
8592 '/user/get-session-user' ,
8693 options: Options (
8794 headers: {
0 commit comments