From be7939ad7f7d1e326bae9b7a169bdf5f9ba7dcf9 Mon Sep 17 00:00:00 2001 From: MohammadTaha Basiri Date: Sun, 9 Jan 2022 19:11:54 +0330 Subject: [PATCH] D1APP-17 user info api added --- lib/pages/splash/splash.dart | 11 ++++++-- lib/pages/splash/splash_state.dart | 3 --- lib/providers/user_provider.dart | 42 ++++++++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 5 deletions(-) delete mode 100644 lib/pages/splash/splash_state.dart diff --git a/lib/pages/splash/splash.dart b/lib/pages/splash/splash.dart index 8fe2b63..2e0dddb 100644 --- a/lib/pages/splash/splash.dart +++ b/lib/pages/splash/splash.dart @@ -1,5 +1,8 @@ +import 'dart:developer'; + import 'package:didvan/config/design_config.dart'; import 'package:didvan/main.dart'; +import 'package:didvan/providers/server_data_provider.dart'; import 'package:didvan/providers/theme_provider.dart'; import 'package:didvan/providers/user_provider.dart'; import 'package:didvan/routes/routes.dart'; @@ -38,13 +41,17 @@ class _SplashState extends State { _isGettingThemeData = false; }), ); - final String? token = await context.read().setAndGetToken(); + final userProvider = context.read(); + final String? token = await userProvider.setAndGetToken(); if (token != null) { + log(token); RequestService.token = token; + await userProvider.getUserInfo(); + await context.read().getData(); } - await Future.delayed(const Duration(seconds: 2)); Navigator.of(context).pushReplacementNamed( token == null ? Routes.authenticaion : Routes.home, + arguments: token == null ? false : null, ); } diff --git a/lib/pages/splash/splash_state.dart b/lib/pages/splash/splash_state.dart deleted file mode 100644 index 4dfdbbe..0000000 --- a/lib/pages/splash/splash_state.dart +++ /dev/null @@ -1,3 +0,0 @@ -import 'package:didvan/providers/core_provider.dart'; - -class SplashState extends CoreProvier {} diff --git a/lib/providers/user_provider.dart b/lib/providers/user_provider.dart index 35eeb73..d17517a 100644 --- a/lib/providers/user_provider.dart +++ b/lib/providers/user_provider.dart @@ -1,7 +1,14 @@ +import 'dart:io'; + +import 'package:didvan/models/enums.dart'; +import 'package:didvan/models/user.dart'; import 'package:didvan/providers/core_provider.dart'; +import 'package:didvan/services/network/request.dart'; +import 'package:didvan/services/network/request_helper.dart'; import 'package:hive/hive.dart'; class UserProvider extends CoreProvier { + late User user; Future setAndGetToken({String? token}) async { final box = await Hive.openBox('autherization'); if (token != null) { @@ -10,4 +17,39 @@ class UserProvider extends CoreProvier { return box.toMap()['token']; } } + + Future getUserInfo() async { + final RequestService service = RequestService(RequestHelper.userInfo); + await service.httpGet(); + if (service.isSuccess) { + user = User.fromJson(service.result['user']); + return; + } + throw 'Getting user from API failed!'; + } + + Future setProfilePhoto(File file) async { + appState = AppState.isolatedBusy; + final RequestService service = + RequestService(RequestHelper.updateUserProfile); + await service.multipart(file); + if (service.isSuccess) { + appState = AppState.idle; + return true; + } + appState = AppState.failed; + return false; + } + + Future setUsername(String username) async { + appState = AppState.isolatedBusy; + final RequestService service = RequestService( + RequestHelper.updateUsername, + body: {'username': username}, + ); + await service.put(); + if (service.isSuccess) { + // appState = app + } + } }