From 9d5eba68704a2675e8601a9d270788e6ed8d236d Mon Sep 17 00:00:00 2001 From: mohammad Date: Sun, 21 Jul 2024 15:09:51 +0300 Subject: [PATCH] dio and login functions --- lib/pages/auth/bloc/login_bloc.dart | 10 -------- lib/pages/auth/model/token.dart | 2 +- lib/pages/auth/view/login_mobile_page.dart | 2 +- lib/pages/auth/view/login_web_page.dart | 2 +- lib/services/api/api_links_endpoints.dart | 10 -------- lib/services/api/http_interceptor.dart | 23 +++++++++++-------- lib/services/api/http_service.dart | 2 +- lib/services/api/network_exception.dart | 3 ++- lib/services/auth_api.dart | 2 +- lib/services/locator.dart | 1 - lib/utils/constants/api_const.dart | 8 +++++++ lib/utils/{ => constants}/assets.dart | 0 lib/utils/constants/string_const.dart | 5 ++++ .../{const.dart => helpers/decodeBase64.dart} | 0 lib/web_layout/web_app_bar.dart | 3 --- lib/web_layout/web_scaffold.dart | 2 +- 16 files changed, 34 insertions(+), 41 deletions(-) delete mode 100644 lib/services/api/api_links_endpoints.dart create mode 100644 lib/utils/constants/api_const.dart rename lib/utils/{ => constants}/assets.dart (100%) create mode 100644 lib/utils/constants/string_const.dart rename lib/utils/{const.dart => helpers/decodeBase64.dart} (100%) diff --git a/lib/pages/auth/bloc/login_bloc.dart b/lib/pages/auth/bloc/login_bloc.dart index b3c534a6..83443eea 100644 --- a/lib/pages/auth/bloc/login_bloc.dart +++ b/lib/pages/auth/bloc/login_bloc.dart @@ -36,16 +36,6 @@ class LoginBloc extends Bloc { bool isPasswordVisible = false; bool showValidationMessage = false; - void _onPress(LoginButtonPressed event, Emitter emit) async { - emit(LoginLoading()); - await Future.delayed(const Duration(seconds: 2)); - if (event.username == 'admin' && event.password == 'password') { - emit(LoginSuccess()); - } else { - emit(const LoginFailure(error: 'Invalid credentials')); - } - } - /////////////////////////////////////VALIDATORS///////////////////////////////////// String? passwordValidator(String? value) { diff --git a/lib/pages/auth/model/token.dart b/lib/pages/auth/model/token.dart index 05e4380b..3e0728bc 100644 --- a/lib/pages/auth/model/token.dart +++ b/lib/pages/auth/model/token.dart @@ -1,6 +1,6 @@ import 'dart:convert'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; -import 'package:syncrow_web/utils/const.dart'; +import 'package:syncrow_web/utils/helpers/decodeBase64.dart'; class Token { static const String loginAccessTokenKey = 'accessToken'; diff --git a/lib/pages/auth/view/login_mobile_page.dart b/lib/pages/auth/view/login_mobile_page.dart index 9dc81efe..ccccb916 100644 --- a/lib/pages/auth/view/login_mobile_page.dart +++ b/lib/pages/auth/view/login_mobile_page.dart @@ -2,7 +2,7 @@ import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_svg/svg.dart'; -import 'package:syncrow_web/utils/assets.dart'; +import 'package:syncrow_web/utils/constants/assets.dart'; import 'package:syncrow_web/pages/auth/bloc/login_bloc.dart'; import 'package:syncrow_web/pages/auth/bloc/login_event.dart'; import 'package:syncrow_web/pages/auth/bloc/login_state.dart'; diff --git a/lib/pages/auth/view/login_web_page.dart b/lib/pages/auth/view/login_web_page.dart index ce7050d6..92f24028 100644 --- a/lib/pages/auth/view/login_web_page.dart +++ b/lib/pages/auth/view/login_web_page.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_svg/svg.dart'; -import 'package:syncrow_web/utils/assets.dart'; +import 'package:syncrow_web/utils/constants/assets.dart'; import 'package:syncrow_web/pages/auth/bloc/login_bloc.dart'; import 'package:syncrow_web/pages/auth/bloc/login_event.dart'; import 'package:syncrow_web/pages/auth/bloc/login_state.dart'; diff --git a/lib/services/api/api_links_endpoints.dart b/lib/services/api/api_links_endpoints.dart deleted file mode 100644 index a94099ad..00000000 --- a/lib/services/api/api_links_endpoints.dart +++ /dev/null @@ -1,10 +0,0 @@ -abstract class ApiEndpoints { - static const String baseUrl = 'https://syncrow.azurewebsites.net'; - // static const String baseUrl = 'http://100.107.182.63:4001'; //Localhost - -////////////////////////////////////// Authentication /////////////////////////////// - - static const String signUp = '$baseUrl/authentication/user/signup'; - static const String login = '$baseUrl/authentication/user/login'; - -} diff --git a/lib/services/api/http_interceptor.dart b/lib/services/api/http_interceptor.dart index e71af416..71fbaba3 100644 --- a/lib/services/api/http_interceptor.dart +++ b/lib/services/api/http_interceptor.dart @@ -1,9 +1,11 @@ +import 'dart:io'; import 'package:dio/dio.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import 'package:syncrow_web/pages/auth/model/token.dart'; import 'dart:async'; import 'package:syncrow_web/services/api/network_exception.dart'; +import 'package:syncrow_web/utils/constants/api_const.dart'; import 'package:syncrow_web/utils/snack_bar.dart'; -import 'api_links_endpoints.dart'; class HTTPInterceptor extends InterceptorsWrapper { List headerExclusionList = []; @@ -11,6 +13,7 @@ class HTTPInterceptor extends InterceptorsWrapper { List headerExclusionListOfAddedParameters = [ ApiEndpoints.login, ]; + @override void onResponse(Response response, ResponseInterceptorHandler handler) async { if (await validateResponse(response)) { @@ -23,11 +26,11 @@ class HTTPInterceptor extends InterceptorsWrapper { @override void onRequest(RequestOptions options, RequestInterceptorHandler handler) async { var storage = const FlutterSecureStorage(); - // var token = await storage.read(key: Token.loginAccessTokenKey); - // if (checkHeaderExclusionListOfAddedParameters(options.path)) { - // options.headers.putIfAbsent(HttpHeaders.authorizationHeader, () => "Bearer $token"); - // } - // options.headers['Authorization'] = 'Bearer ${'${token!}123'}'; + var token = await storage.read(key: Token.loginAccessTokenKey); + if (checkHeaderExclusionListOfAddedParameters(options.path)) { + options.headers.putIfAbsent(HttpHeaders.authorizationHeader, () => "Bearer $token"); + } + options.headers['Authorization'] = 'Bearer ${token!}'; super.onRequest(options, handler); } @@ -38,10 +41,10 @@ class HTTPInterceptor extends InterceptorsWrapper { CustomSnackBar.displaySnackBar(failure.toString()); } var storage = const FlutterSecureStorage(); - // var token = await storage.read(key: Token.loginAccessTokenKey); - // if (err.response?.statusCode == 401 && token != null) { - // await AuthCubit.get(NavigationService.navigatorKey.currentContext!).logout(); - // } + var token = await storage.read(key: Token.loginAccessTokenKey); + if (err.response?.statusCode == 401 && token != null) { + // await AuthCubit.get(NavigationService.navigatorKey.currentContext!).logout(); + } super.onError(err, handler); } diff --git a/lib/services/api/http_service.dart b/lib/services/api/http_service.dart index 040eef78..b75f05cf 100644 --- a/lib/services/api/http_service.dart +++ b/lib/services/api/http_service.dart @@ -1,7 +1,7 @@ import 'package:dio/dio.dart'; -import 'package:syncrow_web/services/api/api_links_endpoints.dart'; import 'package:syncrow_web/services/api/http_interceptor.dart'; import 'package:syncrow_web/services/locator.dart'; +import 'package:syncrow_web/utils/constants/api_const.dart'; class HTTPService { final Dio client = serviceLocator.get(); diff --git a/lib/services/api/network_exception.dart b/lib/services/api/network_exception.dart index f6fb88c4..81f12b3e 100644 --- a/lib/services/api/network_exception.dart +++ b/lib/services/api/network_exception.dart @@ -32,7 +32,8 @@ class ServerFailure extends Failure { // var document = parser.parse(dioError.response!.data.toString()); // var message = document.body!.text; return ServerFailure.fromResponse( - dioError.response!.statusCode!, dioError.response?.data['message'] ?? "Error"); + dioError.response!.statusCode!, + dioError.response?.data['message'] ?? "Error"); } case DioExceptionType.cancel: return ServerFailure("The request to ApiServer was canceled"); diff --git a/lib/services/auth_api.dart b/lib/services/auth_api.dart index da31d84c..4829f527 100644 --- a/lib/services/auth_api.dart +++ b/lib/services/auth_api.dart @@ -1,5 +1,5 @@ import 'package:syncrow_web/pages/auth/model/token.dart'; -import 'api/api_links_endpoints.dart'; +import 'package:syncrow_web/utils/constants/api_const.dart'; import 'api/http_service.dart'; class AuthenticationAPI { diff --git a/lib/services/locator.dart b/lib/services/locator.dart index 4cef6d5f..4a9263a0 100644 --- a/lib/services/locator.dart +++ b/lib/services/locator.dart @@ -8,6 +8,5 @@ final GetIt serviceLocator = GetIt.instance; initialSetup() { serviceLocator.registerSingleton(HTTPInterceptor()); //Base classes - serviceLocator.registerSingleton(HTTPService.setupDioClient()); } diff --git a/lib/utils/constants/api_const.dart b/lib/utils/constants/api_const.dart new file mode 100644 index 00000000..e188f4e6 --- /dev/null +++ b/lib/utils/constants/api_const.dart @@ -0,0 +1,8 @@ +abstract class ApiEndpoints { + static const String baseUrl = 'https://syncrow-staging.azurewebsites.net'; + // static const String baseUrl = 'http://100.107.182.63:4001'; //Localhost +//https://syncrow-staging.azurewebsites.net +////////////////////////////////////// Authentication /////////////////////////////// + static const String signUp = 'authentication/user/signup'; + static const String login = 'authentication/user/login'; +} diff --git a/lib/utils/assets.dart b/lib/utils/constants/assets.dart similarity index 100% rename from lib/utils/assets.dart rename to lib/utils/constants/assets.dart diff --git a/lib/utils/constants/string_const.dart b/lib/utils/constants/string_const.dart new file mode 100644 index 00000000..3f2ff2d6 --- /dev/null +++ b/lib/utils/constants/string_const.dart @@ -0,0 +1,5 @@ + + + + + diff --git a/lib/utils/const.dart b/lib/utils/helpers/decodeBase64.dart similarity index 100% rename from lib/utils/const.dart rename to lib/utils/helpers/decodeBase64.dart diff --git a/lib/web_layout/web_app_bar.dart b/lib/web_layout/web_app_bar.dart index 94773d73..c7655eef 100644 --- a/lib/web_layout/web_app_bar.dart +++ b/lib/web_layout/web_app_bar.dart @@ -57,7 +57,4 @@ class WebAppBar extends StatelessWidget { ) , ); } - - // @override - // Size get preferredSize => Size.fromHeight(50.0); } \ No newline at end of file diff --git a/lib/web_layout/web_scaffold.dart b/lib/web_layout/web_scaffold.dart index 8ea9f506..1f697739 100644 --- a/lib/web_layout/web_scaffold.dart +++ b/lib/web_layout/web_scaffold.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; -import 'package:syncrow_web/utils/assets.dart'; +import 'package:syncrow_web/utils/constants/assets.dart'; import 'package:syncrow_web/web_layout/web_app_bar.dart'; import 'menu_sidebar.dart';