import 'dart:convert'; import 'package:onufitness/constants/constant.dart'; import 'package:onufitness/models/general/get_agora_user_trm_token_response_model.dart'; import 'package:onufitness/models/login_response_model.dart'; import 'package:onufitness/models/user_details_response_model.dart'; import 'package:onufitness/screens/u_vault/models/failed_videos_draft_model.dart'; class SharedServices { //............................................................................. static Future setLoginDetails(LoginResponseModel? responseModel) async { if (responseModel != null) { preferences!.setString( "login_details", jsonEncode(responseModel.toJson()), ); } } //............................................................................. static bool isLoggedIn() { return preferences?.getString("login_details") != null ? true : false; } static bool isUserDataExist() { return preferences?.getString("user_details") != null ? true : false; } //............................................................................. static LoginResponseModel? getLoginDetails() { if (preferences!.getString("login_details") != null) { return LoginResponseModel.fromJson( jsonDecode(preferences!.getString("login_details")!), ); } else { return null; } } //............................................................................. static Future logout() async { await preferences!.clear(); preferences?.remove('login_details'); preferences?.remove('user_details'); return true; } //............................................................................. static String userAuth() { var model = LoginResponseModel.fromJson( jsonDecode(preferences!.getString("login_details")!), ); return "Bearer ${model.data?.tokenResponse?.accessToken}"; } //............................................................................. // Set User Details............................................................ static Future setUserDetails( UserDetailsResponseModel? responseModel, ) async { if (responseModel != null) { preferences!.setString( "user_details", jsonEncode(responseModel.toJson()), ); } } //............................................................................. // Get User Details............................................................ static UserDetailsResponseModel? getUserDetails() { if (preferences!.getString("user_details") != null) { return UserDetailsResponseModel.fromJson( jsonDecode(preferences!.getString("user_details")!), ); } else { return null; } } //...........Draft Videos.................................................................. //............................................................................. static Future addFailedUpload(FailedUploadModel model) async { final current = preferences!.getStringList("failed_uploads") ?? []; final modelJson = jsonEncode(model.toJson()); if (!(current.any((e) => e.contains(model.title)) || current.any((e) => e.contains(model.videoFilePath)))) { current.add(modelJson); await preferences!.setStringList("failed_uploads", current); } } static List getFailedUploads() { final data = preferences!.getStringList("failed_uploads") ?? []; return data.map((e) => FailedUploadModel.fromJson(jsonDecode(e))).toList(); } static Future removeFailedUploadAt(int index) async { final list = preferences!.getStringList("failed_uploads") ?? []; if (index >= 0 && index < list.length) { list.removeAt(index); await preferences!.setStringList("failed_uploads", list); } } //............................................................................. //............................................................................. // Agora Details............................................................ static Future setAgoraToken( AgoraUserAndRtmTokenResponseModel? responseModel, ) async { if (responseModel != null) { preferences!.setString( "agora_user_rtm_token", jsonEncode(responseModel.toJson()), ); } } static AgoraUserAndRtmTokenResponseModel? getAgoraUserAndRtmTokens() { if (preferences!.getString("agora_user_rtm_token") != null) { return AgoraUserAndRtmTokenResponseModel.fromJson( jsonDecode(preferences!.getString("agora_user_rtm_token")!), ); } else { return null; } } }