diff --git a/data/src/main/java/one/nem/kidshift/data/KSActions.java b/data/src/main/java/one/nem/kidshift/data/KSActions.java index 38e98b0..9a3366c 100644 --- a/data/src/main/java/one/nem/kidshift/data/KSActions.java +++ b/data/src/main/java/one/nem/kidshift/data/KSActions.java @@ -29,6 +29,6 @@ public interface KSActions { /** * 履歴情報同期 */ - CompletableFuture> syncHistory(); + CompletableFuture> syncHistory(String childId); } diff --git a/data/src/main/java/one/nem/kidshift/data/impl/KSActionsImpl.java b/data/src/main/java/one/nem/kidshift/data/impl/KSActionsImpl.java index 8a1d0b8..f97b580 100644 --- a/data/src/main/java/one/nem/kidshift/data/impl/KSActionsImpl.java +++ b/data/src/main/java/one/nem/kidshift/data/impl/KSActionsImpl.java @@ -10,12 +10,15 @@ import one.nem.kidshift.data.UserSettings; import one.nem.kidshift.data.retrofit.KidShiftApiService; import one.nem.kidshift.data.retrofit.model.child.ChildListResponse; import one.nem.kidshift.data.retrofit.model.converter.ChildModelConverter; +import one.nem.kidshift.data.retrofit.model.converter.HistoryModelConverter; import one.nem.kidshift.data.retrofit.model.converter.ParentModelConverter; import one.nem.kidshift.data.retrofit.model.converter.TaskModelConverter; import one.nem.kidshift.data.retrofit.model.parent.ParentInfoResponse; +import one.nem.kidshift.data.retrofit.model.task.HistoryListResponse; import one.nem.kidshift.data.retrofit.model.task.TaskListResponse; import one.nem.kidshift.data.room.utils.CacheWrapper; import one.nem.kidshift.model.ChildModel; +import one.nem.kidshift.model.HistoryModel; import one.nem.kidshift.model.ParentModel; import one.nem.kidshift.model.tasks.TaskItemModel; import one.nem.kidshift.utils.KSLogger; @@ -152,4 +155,31 @@ public class KSActionsImpl implements KSActions { } }); } + + @Override + public CompletableFuture> syncHistory(String childId) { + CompletableFuture callHistoryApi = CompletableFuture.supplyAsync(() -> { + Call call = kidShiftApiService.getHistory(childId); + try { + Response response = call.execute(); + if (!response.isSuccessful()) { + logger.error("Error fetching history list: " + response.errorBody().string()); + throw new RuntimeException("Error fetching history list: " + response.errorBody().string()); + } + HistoryListResponse responseBody = response.body(); + return responseBody; + } catch (Exception e) { + logger.error("Error fetching history list"); + throw new RuntimeException(e); + } + }); + + CompletableFuture callTaskApi = fetchTaskListAsync(); + + return CompletableFuture.allOf(callHistoryApi, callTaskApi).thenApplyAsync(result -> { + HistoryListResponse historyListResponse = callHistoryApi.join(); + TaskListResponse taskListResponse = callTaskApi.join(); + return HistoryModelConverter.historyListResponseAndTaskListResponseToHistoryModelList(historyListResponse, taskListResponse); + }); + } }