子供を追加できるように #134

Merged
Fujimatsu merged 2 commits from feature/add_child_impl into main 2024-07-05 02:42:11 +00:00
3 changed files with 24 additions and 7 deletions

View File

@ -31,7 +31,7 @@ public interface ChildData {
* 子ユーザー追加
* @param child 子ユーザー情報
*/
void addChild(ChildModel child);
CompletableFuture<ChildModel> addChild(ChildModel child);
/**
* 子ユーザー削除

View File

@ -10,6 +10,8 @@ import one.nem.kidshift.data.ChildData;
import one.nem.kidshift.data.KSActions;
import one.nem.kidshift.data.retrofit.KidShiftApiService;
import one.nem.kidshift.data.retrofit.model.child.ChildLoginCodeResponse;
import one.nem.kidshift.data.retrofit.model.child.ChildResponse;
import one.nem.kidshift.data.retrofit.model.converter.ChildModelConverter;
import one.nem.kidshift.data.room.utils.CacheWrapper;
import one.nem.kidshift.model.ChildModel;
import one.nem.kidshift.model.callback.ChildModelCallback;
@ -92,8 +94,22 @@ public class ChildDataImpl implements ChildData {
}
@Override
public void addChild(ChildModel child) {
public CompletableFuture<ChildModel> addChild(ChildModel child) {
return CompletableFuture.supplyAsync(() -> {
Call<ChildResponse> call = kidShiftApiService.addChild(ChildModelConverter.childModelToChildAddRequest(child));
try {
Response<ChildResponse> response = call.execute();
if (response.isSuccessful()) {
assert response.body() != null;
logger.info("子供追加成功(childId: " + response.body().getId() + ")");
return ChildModelConverter.childResponseToChildModel(response.body());
} else {
throw new RuntimeException("HTTP Status: " + response.code());
}
} catch (Exception e) {
throw new RuntimeException(e);
}
});
}
@Override

View File

@ -243,10 +243,11 @@ public class SettingMainFragment extends Fragment {
.setPositiveButton("追加", (dialog, which) -> {
ChildModel childModel = new ChildModel();
childModel.setName(Objects.requireNonNull(((TextView) dialogView.findViewById(R.id.childNameEditText)).getText()).toString());
childData.addChild(childModel);
// debug
logger.debug("子供を追加しました: " + childModel.getName());
updateChildInfo();
childData.addChild(childModel).thenAccept(childModel1 -> { // Debug
logger.debug("子供を追加しました: " + childModel1.getName());
}).thenRun(() -> {
updateChildInfo();
});
})
.setNeutralButton("閉じる", (dialog, which) -> {
dialog.cancel();