From 124a10c6198ebe16becb9bab3f1ea94df5a337dd Mon Sep 17 00:00:00 2001 From: Alex <78383757+Lextical@users.noreply.github.com> Date: Sun, 5 Apr 2026 21:57:53 -0600 Subject: [PATCH] Edited RetrofitUtils to also call enqueue to reduce code in repository --- .../repositories/AdoptionRepository.java | 30 ++-------- .../repositories/AppointmentRepository.java | 30 ++-------- .../repositories/AuthRepository.java | 57 ++++++++++--------- .../repositories/CategoryRepository.java | 6 +- .../repositories/CustomerRepository.java | 12 +--- .../repositories/InventoryRepository.java | 36 ++---------- .../repositories/PetRepository.java | 42 +++----------- .../repositories/ProductRepository.java | 42 +++----------- .../ProductSupplierRepository.java | 24 ++------ .../repositories/PurchaseOrderRepository.java | 18 +----- .../repositories/ServiceRepository.java | 30 ++-------- .../repositories/StoreRepository.java | 6 +- .../repositories/SupplierRepository.java | 36 +++--------- .../petstoremobile/utils/ErrorUtils.java | 14 +++-- .../petstoremobile/utils/RetrofitUtils.java | 29 ++++++++++ 15 files changed, 121 insertions(+), 291 deletions(-) diff --git a/android/app/src/main/java/com/example/petstoremobile/repositories/AdoptionRepository.java b/android/app/src/main/java/com/example/petstoremobile/repositories/AdoptionRepository.java index 8e47788e..f5a5d2c5 100644 --- a/android/app/src/main/java/com/example/petstoremobile/repositories/AdoptionRepository.java +++ b/android/app/src/main/java/com/example/petstoremobile/repositories/AdoptionRepository.java @@ -27,11 +27,7 @@ public class AdoptionRepository { */ public LiveData>> getAllAdoptions(int page, int size) { MutableLiveData>> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - adoptionApi.getAllAdoptions(page, size).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(adoptionApi.getAllAdoptions(page, size), data, TAG); return data; } @@ -40,11 +36,7 @@ public class AdoptionRepository { */ public LiveData> getAdoptionById(Long id) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - adoptionApi.getAdoptionById(id).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(adoptionApi.getAdoptionById(id), data, TAG); return data; } @@ -53,11 +45,7 @@ public class AdoptionRepository { */ public LiveData> createAdoption(AdoptionDTO adoption) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - adoptionApi.createAdoption(adoption).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(adoptionApi.createAdoption(adoption), data, TAG); return data; } @@ -66,11 +54,7 @@ public class AdoptionRepository { */ public LiveData> updateAdoption(Long id, AdoptionDTO adoption) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - adoptionApi.updateAdoption(id, adoption).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(adoptionApi.updateAdoption(id, adoption), data, TAG); return data; } @@ -79,11 +63,7 @@ public class AdoptionRepository { */ public LiveData> deleteAdoption(Long id) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - adoptionApi.deleteAdoption(id).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(null)))); - + RetrofitUtils.enqueue(adoptionApi.deleteAdoption(id), data, TAG); return data; } } diff --git a/android/app/src/main/java/com/example/petstoremobile/repositories/AppointmentRepository.java b/android/app/src/main/java/com/example/petstoremobile/repositories/AppointmentRepository.java index 3dd6037d..61f56842 100644 --- a/android/app/src/main/java/com/example/petstoremobile/repositories/AppointmentRepository.java +++ b/android/app/src/main/java/com/example/petstoremobile/repositories/AppointmentRepository.java @@ -27,11 +27,7 @@ public class AppointmentRepository { */ public LiveData>> getAllAppointments(int page, int size) { MutableLiveData>> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - appointmentApi.getAllAppointments(page, size).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(appointmentApi.getAllAppointments(page, size), data, TAG); return data; } @@ -40,11 +36,7 @@ public class AppointmentRepository { */ public LiveData> getAppointmentById(Long id) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - appointmentApi.getAppointmentById(id).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(appointmentApi.getAppointmentById(id), data, TAG); return data; } @@ -53,11 +45,7 @@ public class AppointmentRepository { */ public LiveData> createAppointment(AppointmentDTO appointment) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - appointmentApi.createAppointment(appointment).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(appointmentApi.createAppointment(appointment), data, TAG); return data; } @@ -66,11 +54,7 @@ public class AppointmentRepository { */ public LiveData> updateAppointment(Long id, AppointmentDTO appointment) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - appointmentApi.updateAppointment(id, appointment).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(appointmentApi.updateAppointment(id, appointment), data, TAG); return data; } @@ -79,11 +63,7 @@ public class AppointmentRepository { */ public LiveData> deleteAppointment(Long id) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - appointmentApi.deleteAppointment(id).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(null)))); - + RetrofitUtils.enqueue(appointmentApi.deleteAppointment(id), data, TAG); return data; } } diff --git a/android/app/src/main/java/com/example/petstoremobile/repositories/AuthRepository.java b/android/app/src/main/java/com/example/petstoremobile/repositories/AuthRepository.java index fd02e1ff..dec9613e 100644 --- a/android/app/src/main/java/com/example/petstoremobile/repositories/AuthRepository.java +++ b/android/app/src/main/java/com/example/petstoremobile/repositories/AuthRepository.java @@ -2,6 +2,7 @@ package com.example.petstoremobile.repositories; import android.util.Log; +import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; @@ -9,6 +10,7 @@ import com.example.petstoremobile.api.auth.AuthApi; import com.example.petstoremobile.api.auth.TokenManager; import com.example.petstoremobile.dtos.AuthDTO; import com.example.petstoremobile.dtos.UserDTO; +import com.example.petstoremobile.utils.ErrorUtils; import com.example.petstoremobile.utils.Resource; import com.example.petstoremobile.utils.RetrofitUtils; @@ -18,6 +20,9 @@ import javax.inject.Inject; import javax.inject.Singleton; import okhttp3.MultipartBody; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; @Singleton public class AuthRepository { @@ -38,14 +43,28 @@ public class AuthRepository { MutableLiveData> data = new MutableLiveData<>(); data.setValue(Resource.loading(null)); - authApi.login(loginRequest).enqueue(RetrofitUtils.createSilentCallback(TAG, result -> { - if (result != null && result.getToken() != null) { - tokenManager.saveLoginData(result.getToken(), result.getUsername(), result.getRole()); - data.setValue(Resource.success(result)); - } else { - data.setValue(Resource.error("Login failed", null)); + authApi.login(loginRequest).enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful()) { + AuthDTO.LoginResponse result = response.body(); + if (result != null && result.getToken() != null) { + tokenManager.saveLoginData(result.getToken(), result.getUsername(), result.getRole()); + data.setValue(Resource.success(result)); + } else { + data.setValue(Resource.error("Login failed: Invalid response", null)); + } + } else { + String errorMsg = ErrorUtils.getErrorMessage(response, "Login failed"); + data.setValue(Resource.error(errorMsg, null)); + } } - })); + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + data.setValue(Resource.error("Network error: " + t.getMessage(), null)); + } + }); return data; } @@ -55,11 +74,7 @@ public class AuthRepository { */ public LiveData> getMe() { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - authApi.getMe().enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(authApi.getMe(), data, TAG); return data; } @@ -68,11 +83,7 @@ public class AuthRepository { */ public LiveData> updateMe(Map updates) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - authApi.updateMe(updates).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(authApi.updateMe(updates), data, TAG); return data; } @@ -81,11 +92,7 @@ public class AuthRepository { */ public LiveData> uploadAvatar(MultipartBody.Part avatar) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - authApi.uploadAvatar(avatar).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(authApi.uploadAvatar(avatar), data, TAG); return data; } @@ -94,11 +101,7 @@ public class AuthRepository { */ public LiveData> deleteAvatar() { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - authApi.deleteAvatar().enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(null)))); - + RetrofitUtils.enqueue(authApi.deleteAvatar(), data, TAG); return data; } diff --git a/android/app/src/main/java/com/example/petstoremobile/repositories/CategoryRepository.java b/android/app/src/main/java/com/example/petstoremobile/repositories/CategoryRepository.java index ae3769ed..74516e2b 100644 --- a/android/app/src/main/java/com/example/petstoremobile/repositories/CategoryRepository.java +++ b/android/app/src/main/java/com/example/petstoremobile/repositories/CategoryRepository.java @@ -27,11 +27,7 @@ public class CategoryRepository { */ public LiveData>> getAllCategories(int page, int size) { MutableLiveData>> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - categoryApi.getAllCategories(page, size).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(categoryApi.getAllCategories(page, size), data, TAG); return data; } } diff --git a/android/app/src/main/java/com/example/petstoremobile/repositories/CustomerRepository.java b/android/app/src/main/java/com/example/petstoremobile/repositories/CustomerRepository.java index cd0ae505..834f9197 100644 --- a/android/app/src/main/java/com/example/petstoremobile/repositories/CustomerRepository.java +++ b/android/app/src/main/java/com/example/petstoremobile/repositories/CustomerRepository.java @@ -27,11 +27,7 @@ public class CustomerRepository { */ public LiveData>> getAllCustomers(int page, int size) { MutableLiveData>> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - customerApi.getAllCustomers(page, size).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(customerApi.getAllCustomers(page, size), data, TAG); return data; } @@ -40,11 +36,7 @@ public class CustomerRepository { */ public LiveData> getCustomerById(Long id) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - customerApi.getCustomerById(id).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(customerApi.getCustomerById(id), data, TAG); return data; } } diff --git a/android/app/src/main/java/com/example/petstoremobile/repositories/InventoryRepository.java b/android/app/src/main/java/com/example/petstoremobile/repositories/InventoryRepository.java index e08738ad..4fd2e66d 100644 --- a/android/app/src/main/java/com/example/petstoremobile/repositories/InventoryRepository.java +++ b/android/app/src/main/java/com/example/petstoremobile/repositories/InventoryRepository.java @@ -31,11 +31,7 @@ public class InventoryRepository { */ public LiveData>> getAllInventory(String query, int page, int size, String sort) { MutableLiveData>> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - inventoryApi.getAllInventory(query, page, size, sort).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(inventoryApi.getAllInventory(query, page, size, sort), data, TAG); return data; } @@ -44,11 +40,7 @@ public class InventoryRepository { */ public LiveData> getInventoryById(Long id) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - inventoryApi.getInventoryById(id).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(inventoryApi.getInventoryById(id), data, TAG); return data; } @@ -57,21 +49,13 @@ public class InventoryRepository { */ public LiveData> createInventory(InventoryRequest request) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - inventoryApi.createInventory(request).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(inventoryApi.createInventory(request), data, TAG); return data; } public LiveData> updateInventory(Long id, InventoryRequest request) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - inventoryApi.updateInventory(id, request).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(inventoryApi.updateInventory(id, request), data, TAG); return data; } @@ -80,21 +64,13 @@ public class InventoryRepository { */ public LiveData> deleteInventory(Long id) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - inventoryApi.deleteInventory(id).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(null)))); - + RetrofitUtils.enqueue(inventoryApi.deleteInventory(id), data, TAG); return data; } public LiveData> bulkDeleteInventory(BulkDeleteRequest request) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - inventoryApi.bulkDeleteInventory(request).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(null)))); - + RetrofitUtils.enqueue(inventoryApi.bulkDeleteInventory(request), data, TAG); return data; } } diff --git a/android/app/src/main/java/com/example/petstoremobile/repositories/PetRepository.java b/android/app/src/main/java/com/example/petstoremobile/repositories/PetRepository.java index 9fc087c3..f46bb9e3 100644 --- a/android/app/src/main/java/com/example/petstoremobile/repositories/PetRepository.java +++ b/android/app/src/main/java/com/example/petstoremobile/repositories/PetRepository.java @@ -29,11 +29,7 @@ public class PetRepository { */ public LiveData>> getAllPets(int page, int size) { MutableLiveData>> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - petApi.getAllPets(page, size).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(petApi.getAllPets(page, size), data, TAG); return data; } @@ -42,11 +38,7 @@ public class PetRepository { */ public LiveData> getPetById(Long id) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - petApi.getPetById(id).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(petApi.getPetById(id), data, TAG); return data; } @@ -55,11 +47,7 @@ public class PetRepository { */ public LiveData> createPet(PetDTO pet) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - petApi.createPet(pet).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(petApi.createPet(pet), data, TAG); return data; } @@ -68,11 +56,7 @@ public class PetRepository { */ public LiveData> updatePet(Long id, PetDTO pet) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - petApi.updatePet(id, pet).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(petApi.updatePet(id, pet), data, TAG); return data; } @@ -81,11 +65,7 @@ public class PetRepository { */ public LiveData> deletePet(Long id) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - petApi.deletePet(id).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(null)))); - + RetrofitUtils.enqueue(petApi.deletePet(id), data, TAG); return data; } @@ -94,11 +74,7 @@ public class PetRepository { */ public LiveData> uploadPetImage(Long id, MultipartBody.Part image) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - petApi.uploadPetImage(id, image).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(null)))); - + RetrofitUtils.enqueue(petApi.uploadPetImage(id, image), data, TAG); return data; } @@ -107,11 +83,7 @@ public class PetRepository { */ public LiveData> deletePetImage(Long id) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - petApi.deletePetImage(id).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(null)))); - + RetrofitUtils.enqueue(petApi.deletePetImage(id), data, TAG); return data; } } diff --git a/android/app/src/main/java/com/example/petstoremobile/repositories/ProductRepository.java b/android/app/src/main/java/com/example/petstoremobile/repositories/ProductRepository.java index 84ac81b1..0baf5c4a 100644 --- a/android/app/src/main/java/com/example/petstoremobile/repositories/ProductRepository.java +++ b/android/app/src/main/java/com/example/petstoremobile/repositories/ProductRepository.java @@ -29,11 +29,7 @@ public class ProductRepository { */ public LiveData>> getAllProducts(String query, int page, int size) { MutableLiveData>> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - productApi.getAllProducts(query, page, size).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(productApi.getAllProducts(query, page, size), data, TAG); return data; } @@ -42,11 +38,7 @@ public class ProductRepository { */ public LiveData> getProductById(Long id) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - productApi.getProductById(id).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(productApi.getProductById(id), data, TAG); return data; } @@ -55,11 +47,7 @@ public class ProductRepository { */ public LiveData> createProduct(ProductDTO product) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - productApi.createProduct(product).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(productApi.createProduct(product), data, TAG); return data; } @@ -68,11 +56,7 @@ public class ProductRepository { */ public LiveData> updateProduct(Long id, ProductDTO product) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - productApi.updateProduct(id, product).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(productApi.updateProduct(id, product), data, TAG); return data; } @@ -81,11 +65,7 @@ public class ProductRepository { */ public LiveData> deleteProduct(Long id) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - productApi.deleteProduct(id).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(null)))); - + RetrofitUtils.enqueue(productApi.deleteProduct(id), data, TAG); return data; } @@ -94,11 +74,7 @@ public class ProductRepository { */ public LiveData> uploadProductImage(Long id, MultipartBody.Part image) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - productApi.uploadProductImage(id, image).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(null)))); - + RetrofitUtils.enqueue(productApi.uploadProductImage(id, image), data, TAG); return data; } @@ -107,11 +83,7 @@ public class ProductRepository { */ public LiveData> deleteProductImage(Long id) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - productApi.deleteProductImage(id).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(null)))); - + RetrofitUtils.enqueue(productApi.deleteProductImage(id), data, TAG); return data; } } diff --git a/android/app/src/main/java/com/example/petstoremobile/repositories/ProductSupplierRepository.java b/android/app/src/main/java/com/example/petstoremobile/repositories/ProductSupplierRepository.java index eebe13f6..e92472c0 100644 --- a/android/app/src/main/java/com/example/petstoremobile/repositories/ProductSupplierRepository.java +++ b/android/app/src/main/java/com/example/petstoremobile/repositories/ProductSupplierRepository.java @@ -27,11 +27,7 @@ public class ProductSupplierRepository { */ public LiveData>> getAllProductSuppliers(int page, int size) { MutableLiveData>> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - api.getAllProductSuppliers(page, size).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(api.getAllProductSuppliers(page, size), data, TAG); return data; } @@ -40,11 +36,7 @@ public class ProductSupplierRepository { */ public LiveData> createProductSupplier(ProductSupplierDTO dto) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - api.createProductSupplier(dto).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(api.createProductSupplier(dto), data, TAG); return data; } @@ -53,11 +45,7 @@ public class ProductSupplierRepository { */ public LiveData> updateProductSupplier(Long productId, Long supplierId, ProductSupplierDTO dto) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - api.updateProductSupplier(productId, supplierId, dto).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(api.updateProductSupplier(productId, supplierId, dto), data, TAG); return data; } @@ -66,11 +54,7 @@ public class ProductSupplierRepository { */ public LiveData> deleteProductSupplier(Long productId, Long supplierId) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - api.deleteProductSupplier(productId, supplierId).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(null)))); - + RetrofitUtils.enqueue(api.deleteProductSupplier(productId, supplierId), data, TAG); return data; } } diff --git a/android/app/src/main/java/com/example/petstoremobile/repositories/PurchaseOrderRepository.java b/android/app/src/main/java/com/example/petstoremobile/repositories/PurchaseOrderRepository.java index ad46c26b..f00400e5 100644 --- a/android/app/src/main/java/com/example/petstoremobile/repositories/PurchaseOrderRepository.java +++ b/android/app/src/main/java/com/example/petstoremobile/repositories/PurchaseOrderRepository.java @@ -12,10 +12,6 @@ import com.example.petstoremobile.utils.RetrofitUtils; import javax.inject.Inject; import javax.inject.Singleton; -import retrofit2.Call; -import retrofit2.Callback; -import retrofit2.Response; - @Singleton public class PurchaseOrderRepository { private static final String TAG = "PurchaseOrderRepo"; @@ -31,12 +27,7 @@ public class PurchaseOrderRepository { */ public LiveData>> getAllPurchaseOrders(int page, int size) { MutableLiveData>> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - api.getAllPurchaseOrders(page, size).enqueue(RetrofitUtils.createSilentCallback(TAG, result -> { - data.setValue(Resource.success(result)); - })); - + RetrofitUtils.enqueue(api.getAllPurchaseOrders(page, size), data, TAG); return data; } @@ -45,12 +36,7 @@ public class PurchaseOrderRepository { */ public LiveData> getPurchaseOrderById(Long id) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - api.getPurchaseOrderById(id).enqueue(RetrofitUtils.createSilentCallback(TAG, result -> { - data.setValue(Resource.success(result)); - })); - + RetrofitUtils.enqueue(api.getPurchaseOrderById(id), data, TAG); return data; } } diff --git a/android/app/src/main/java/com/example/petstoremobile/repositories/ServiceRepository.java b/android/app/src/main/java/com/example/petstoremobile/repositories/ServiceRepository.java index 4503fa80..ca6021e6 100644 --- a/android/app/src/main/java/com/example/petstoremobile/repositories/ServiceRepository.java +++ b/android/app/src/main/java/com/example/petstoremobile/repositories/ServiceRepository.java @@ -27,11 +27,7 @@ public class ServiceRepository { */ public LiveData>> getAllServices(int page, int size) { MutableLiveData>> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - serviceApi.getAllServices(page, size).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(serviceApi.getAllServices(page, size), data, TAG); return data; } @@ -40,11 +36,7 @@ public class ServiceRepository { */ public LiveData> getServiceById(Long id) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - serviceApi.getServiceById(id).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(serviceApi.getServiceById(id), data, TAG); return data; } @@ -53,11 +45,7 @@ public class ServiceRepository { */ public LiveData> createService(ServiceDTO service) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - serviceApi.createService(service).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(serviceApi.createService(service), data, TAG); return data; } @@ -66,11 +54,7 @@ public class ServiceRepository { */ public LiveData> updateService(Long id, ServiceDTO service) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - serviceApi.updateService(id, service).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(serviceApi.updateService(id, service), data, TAG); return data; } @@ -79,11 +63,7 @@ public class ServiceRepository { */ public LiveData> deleteService(Long id) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - serviceApi.deleteService(id).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(null)))); - + RetrofitUtils.enqueue(serviceApi.deleteService(id), data, TAG); return data; } } diff --git a/android/app/src/main/java/com/example/petstoremobile/repositories/StoreRepository.java b/android/app/src/main/java/com/example/petstoremobile/repositories/StoreRepository.java index e6609bdc..a71a7ffe 100644 --- a/android/app/src/main/java/com/example/petstoremobile/repositories/StoreRepository.java +++ b/android/app/src/main/java/com/example/petstoremobile/repositories/StoreRepository.java @@ -27,11 +27,7 @@ public class StoreRepository { */ public LiveData>> getAllStores(int page, int size) { MutableLiveData>> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - storeApi.getAllStores(page, size).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(storeApi.getAllStores(page, size), data, TAG); return data; } } diff --git a/android/app/src/main/java/com/example/petstoremobile/repositories/SupplierRepository.java b/android/app/src/main/java/com/example/petstoremobile/repositories/SupplierRepository.java index a7a1b633..f169f415 100644 --- a/android/app/src/main/java/com/example/petstoremobile/repositories/SupplierRepository.java +++ b/android/app/src/main/java/com/example/petstoremobile/repositories/SupplierRepository.java @@ -27,11 +27,7 @@ public class SupplierRepository { */ public LiveData>> getAllSuppliers(int page, int size) { MutableLiveData>> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - supplierApi.getAllSuppliers(page, size).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(supplierApi.getAllSuppliers(page, size), data, TAG); return data; } @@ -40,11 +36,7 @@ public class SupplierRepository { */ public LiveData> getSupplierById(Long id) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - supplierApi.getSupplierById(id).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(supplierApi.getSupplierById(id), data, TAG); return data; } @@ -53,11 +45,7 @@ public class SupplierRepository { */ public LiveData> createSupplier(SupplierDTO supplier) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - supplierApi.createSupplier(supplier).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(result)))); - + RetrofitUtils.enqueue(supplierApi.createSupplier(supplier), data, TAG); return data; } @@ -65,15 +53,9 @@ public class SupplierRepository { * Sends a request to the API to update an existing supplier record by ID. */ public LiveData> updateSupplier(Long id, SupplierDTO supplier) { - MutableLiveData>> data = new MutableLiveData<>(); - // Note: The original return type was LiveData>, fixing here - MutableLiveData> resultData = new MutableLiveData<>(); - resultData.setValue(Resource.loading(null)); - - supplierApi.updateSupplier(id, supplier).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> resultData.setValue(Resource.success(result)))); - - return resultData; + MutableLiveData> data = new MutableLiveData<>(); + RetrofitUtils.enqueue(supplierApi.updateSupplier(id, supplier), data, TAG); + return data; } /** @@ -81,11 +63,7 @@ public class SupplierRepository { */ public LiveData> deleteSupplier(Long id) { MutableLiveData> data = new MutableLiveData<>(); - data.setValue(Resource.loading(null)); - - supplierApi.deleteSupplier(id).enqueue(RetrofitUtils.createSilentCallback(TAG, - result -> data.setValue(Resource.success(null)))); - + RetrofitUtils.enqueue(supplierApi.deleteSupplier(id), data, TAG); return data; } } diff --git a/android/app/src/main/java/com/example/petstoremobile/utils/ErrorUtils.java b/android/app/src/main/java/com/example/petstoremobile/utils/ErrorUtils.java index 941f9662..a1e69f5f 100644 --- a/android/app/src/main/java/com/example/petstoremobile/utils/ErrorUtils.java +++ b/android/app/src/main/java/com/example/petstoremobile/utils/ErrorUtils.java @@ -15,18 +15,24 @@ public class ErrorUtils { * Shows an error message to toast based on the response. */ public static void showErrorMessage(Context context, Response response, String defaultMessage) { + Toast.makeText(context, getErrorMessage(response, defaultMessage), Toast.LENGTH_LONG).show(); + } + + /** + * Extracts the error message from the response body. + */ + public static String getErrorMessage(Response response, String defaultMessage) { try { - if (response.errorBody() != null) { + if (response != null && response.errorBody() != null) { String errorJson = response.errorBody().string(); ErrorResponse errorResponse = new Gson().fromJson(errorJson, ErrorResponse.class); if (errorResponse != null && errorResponse.getMessage() != null) { - Toast.makeText(context, errorResponse.getMessage(), Toast.LENGTH_LONG).show(); - return; + return errorResponse.getMessage(); } } } catch (Exception e) { Log.e("ErrorUtils", "Error parsing error body", e); } - Toast.makeText(context, defaultMessage, Toast.LENGTH_SHORT).show(); + return defaultMessage; } } diff --git a/android/app/src/main/java/com/example/petstoremobile/utils/RetrofitUtils.java b/android/app/src/main/java/com/example/petstoremobile/utils/RetrofitUtils.java index a5a1b041..3584f845 100644 --- a/android/app/src/main/java/com/example/petstoremobile/utils/RetrofitUtils.java +++ b/android/app/src/main/java/com/example/petstoremobile/utils/RetrofitUtils.java @@ -5,6 +5,7 @@ import android.util.Log; import android.widget.Toast; import androidx.annotation.NonNull; +import androidx.lifecycle.MutableLiveData; import retrofit2.Call; import retrofit2.Callback; @@ -23,9 +24,36 @@ public class RetrofitUtils { void onSuccess(T result); } + /** + * call and updates the provided MutableLiveData with Resource states. + */ + public static void enqueue(@NonNull Call call, @NonNull MutableLiveData> data, String tag) { + data.setValue(Resource.loading(null)); + call.enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + if (response.isSuccessful()) { + data.setValue(Resource.success(response.body())); + } else { + String errorMsg = ErrorUtils.getErrorMessage(response, "API Error: " + response.code()); + Log.e(tag, errorMsg); + data.setValue(Resource.error(errorMsg, null)); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + String errorMsg = "Network Error: " + t.getMessage(); + Log.e(tag, errorMsg); + data.setValue(Resource.error(errorMsg, null)); + } + }); + } + /** * Creates a callback for Retrofit calls that handles errors and logging. */ + @Deprecated public static Callback createCallback(Context context, String tag, String successMsg, SuccessCallback successCallback) { return new Callback() { @Override @@ -54,6 +82,7 @@ public class RetrofitUtils { /** * Creates a callback that doesn't show toasts */ + @Deprecated public static Callback createSilentCallback(String tag, SuccessCallback successCallback) { return new Callback() { @Override