import 'dart:convert'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:http/http.dart' as http; import '../models/my_addresses_response/address_response_model.dart'; import '../models/utils/api_response.dart'; const url = 'server.muaawana.com'; class AddressServices { 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 addAddress( String address, bool home, double altitude, double longitude) async { errorToken = false; statusCode = -1; await getToken(); final query = { "address": address, "home": home.toString(), "altitude": altitude.toString(), "longitude": longitude.toString(), }; return await http.post( Uri.https(url, '/api/v1/user_address/add_address', query), headers: { 'Authorization': 'Bearer $token', 'Content-type': 'application/json', 'Accept': 'application/json' }, ).then((data) { statusCode = data.statusCode; if (data.statusCode == 200 || data.statusCode == 201) { final jsonData = json.decode(data.body); return APIResponse( statusCode: statusCode, data: jsonData ); } return APIResponse( statusCode: statusCode, errorMessage: 'Please check your info'); }).catchError((_) => APIResponse( statusCode: statusCode, errorMessage: 'no internet connection')); } Future>> fetchAllAddresses() async { errorToken = false; statusCode = -1; await getToken(); return await http.get( Uri.https(url, '/api/v1/user_address/get_all'), headers: { 'Authorization': 'Bearer $token', 'Content-type': 'application/json', 'Accept': 'application/json' }, ).then((data) { statusCode = data.statusCode; if (data.statusCode == 200 || data.statusCode == 201) { final jsonData = json.decode(data.body); var addressList = []; for (var address in jsonData) { final decoded = AddressResponseModel.fromJson(address); addressList.add(decoded); } //print(addressList.length); return APIResponse>( statusCode: statusCode, data : addressList ); } return APIResponse>( statusCode: statusCode, errorMessage: 'Please check your info'); }).catchError((_,stack) { //print(stack); return APIResponse>( statusCode: statusCode, errorMessage: 'no internet connection'); }); } Future updateAddress(String address,int addressId,double altitude,double longitude) async { errorToken = false; statusCode = -1; await getToken(); final query={ "address":address, "altitude":'$altitude', "longitude":'$longitude', }; return await http.patch( Uri.https(url, '/api/v1/user_address/update_address/$addressId',query), headers: { 'Authorization': 'Bearer $token', 'Content-type': 'application/json', 'Accept': 'application/json' }, ).then((data) { statusCode = data.statusCode; if (data.statusCode == 200 || data.statusCode == 201) { // final jsonData = json.decode(data.body); return APIResponse( statusCode: statusCode, ); } return APIResponse( statusCode: statusCode, errorMessage: 'Please check your info'); }).catchError((_) => APIResponse( statusCode: statusCode, errorMessage: 'no internet connection')); } }