import 'dart:convert'; import 'dart:developer'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:http/http.dart' as http; import '../models/products/products_response.dart'; import '../models/services/service_response.dart'; import '../models/utils/api_response.dart'; const url = 'server.muaawana.com'; class BookmarkService { String token = "InvalidToken"; int statusCode = -1; bool errorToken = false; Future getToken() async { final prefs = await SharedPreferences.getInstance(); if (prefs.getString('token') == null || prefs.getString('token') == '') { prefs.setString('token', 'InvalidToken'); } if (prefs.getString('token') != null) { token = prefs.getString('token')!; } return token.toString(); } Future addBookmark( bool isProduct, int id) async { errorToken = false; statusCode = -1; await getToken(); if(isProduct){ return await http.patch( Uri.https(url, '/api/v1/user_product/bookmark/$id'), headers: { 'Authorization': 'Bearer $token', 'Content-type': 'application/json', 'Accept': 'application/json' }, ).then((data) async { statusCode = data.statusCode; if (data.statusCode == 200 || data.statusCode == 201) { final jsonData = json.decode(data.body); log("success bookmark"); return APIResponse( statusCode: statusCode, data: jsonData ); } return APIResponse( statusCode: statusCode, errorMessage: 'Please check your info'); }).catchError((_) => APIResponse( statusCode: statusCode, errorMessage: 'no internet connection')); }else { return await http.patch( Uri.https(url, '/api/v1/user_service/bookmark/$id'), headers: { 'Authorization': 'Bearer $token', 'Content-type': 'application/json', 'Accept': 'application/json' }, ).then((data) async { statusCode = data.statusCode; if (data.statusCode == 200 || data.statusCode == 201) { final jsonData = json.decode(data.body); log("success bookmark"); return APIResponse( statusCode: statusCode, data: jsonData ); } return APIResponse( statusCode: statusCode, errorMessage: 'Please check your info'); }).catchError((_) => APIResponse( statusCode: statusCode, errorMessage: 'no internet connection')); } } Future> getBookmarkedProduct( int size,int page) async { errorToken = false; statusCode = -1; await getToken(); final query= { 'page':'$page', 'size':'$size', }; return await http.get( Uri.https(url, '/api/v1/user_product/get_bookmark',query), headers: { 'Authorization': 'Bearer $token', 'Content-type': 'application/json', 'Accept': 'application/json' }, ).then((data) async { statusCode = data.statusCode; if (data.statusCode == 200 || data.statusCode == 201) { final jsonData = json.decode(data.body); log("success rating"); final result = ProductsResponse.fromJson(jsonData); return APIResponse( statusCode: statusCode,data: result ); } return APIResponse( statusCode: statusCode, errorMessage: 'Please check your info'); }).catchError((_) => APIResponse( statusCode: statusCode, errorMessage: 'no internet connection')); } Future> getBookmarkedService( int size,int page) async { errorToken = false; statusCode = -1; await getToken(); final query= { 'page':'$page', 'size':'$size', }; return await http.get( Uri.https(url, '/api/v1/user_service/get_bookmark',query), headers: { 'Authorization': 'Bearer $token', 'Content-type': 'application/json', 'Accept': 'application/json' }, ).then((data) async { statusCode = data.statusCode; if (data.statusCode == 200 || data.statusCode == 201) { final jsonData = json.decode(data.body); log("success rating"); // //print(jsonData); final result = ServiceResponse.fromJson(jsonData); return APIResponse( statusCode: statusCode, data: result ); } return APIResponse( statusCode: statusCode, errorMessage: 'Please check your info'); }).catchError((_) => APIResponse( statusCode: statusCode, errorMessage: 'no internet connection')); } Future removeBookmark( bool isProduct, int id) async { errorToken = false; statusCode = -1; log('removeBookmark ===== > $id'); await getToken(); if(isProduct){ return await http.patch( Uri.https(url, '/api/v1/user_product/un_bookmark/$id'), headers: { 'Authorization': 'Bearer $token', 'Content-type': 'application/json', 'Accept': 'application/json' }, ).then((data) async { statusCode = data.statusCode; if (data.statusCode == 200 || data.statusCode == 201) { final jsonData = json.decode(data.body); log("success bookmark"); return APIResponse( statusCode: statusCode,data:jsonData ); } return APIResponse( statusCode: statusCode, errorMessage: 'Please check your info'); }).catchError((_) => APIResponse( statusCode: statusCode, errorMessage: 'no internet connection')); }else { return await http.patch( Uri.https(url, '/api/v1/user_service/un_bookmark/$id'), headers: { 'Authorization': 'Bearer $token', 'Content-type': 'application/json', 'Accept': 'application/json' }, ).then((data) async { statusCode = data.statusCode; if (data.statusCode == 200 || data.statusCode == 201) { final jsonData = json.decode(data.body); log("success bookmark"); return APIResponse( statusCode: statusCode, data: jsonData ); } return APIResponse( statusCode: statusCode, errorMessage: 'Please check your info'); }).catchError((_) => APIResponse( statusCode: statusCode, errorMessage: 'no internet connection')); } } }