Merge pull request 'feature/calendar' (#160) from feature/calendar into main
Reviewed-on: #160
This commit is contained in:
commit
e4c36e6971
|
@ -1,11 +1,20 @@
|
|||
package one.nem.kidshift.data;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
import one.nem.kidshift.model.HistoryModel;
|
||||
|
||||
public interface RewardData {
|
||||
/**
|
||||
* 現時点の合計報酬額を取得する
|
||||
* @return Integer 合計報酬額
|
||||
*/
|
||||
CompletableFuture<Integer> getTotalReward(String childId);
|
||||
|
||||
CompletableFuture<List<HistoryModel>> getRewardHistoryList();
|
||||
|
||||
CompletableFuture<List<HistoryModel>> getRewardHistoryList(String childId);
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,13 +1,17 @@
|
|||
package one.nem.kidshift.data.impl;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import one.nem.kidshift.data.ChildData;
|
||||
import one.nem.kidshift.data.KSActions;
|
||||
import one.nem.kidshift.data.RewardData;
|
||||
import one.nem.kidshift.data.UserSettings;
|
||||
import one.nem.kidshift.data.room.utils.CacheWrapper;
|
||||
import one.nem.kidshift.model.ChildModel;
|
||||
import one.nem.kidshift.model.HistoryModel;
|
||||
import one.nem.kidshift.utils.KSLogger;
|
||||
import one.nem.kidshift.utils.factory.KSLoggerFactory;
|
||||
|
@ -18,13 +22,15 @@ public class RewardDataImpl implements RewardData {
|
|||
private final KSActions ksActions;
|
||||
private final CacheWrapper cacheWrapper;
|
||||
private final KSLogger logger;
|
||||
private final ChildData childData;
|
||||
|
||||
|
||||
@Inject
|
||||
public RewardDataImpl(KSLoggerFactory ksLoggerFactory, CacheWrapper cacheWrapper, UserSettings userSettings, KSActions ksActions) {
|
||||
public RewardDataImpl(KSLoggerFactory ksLoggerFactory, CacheWrapper cacheWrapper, UserSettings userSettings, KSActions ksActions, ChildData childData) {
|
||||
this.userSettings = userSettings;
|
||||
this.ksActions = ksActions;
|
||||
this.cacheWrapper = cacheWrapper;
|
||||
this.childData = childData;
|
||||
this.logger = ksLoggerFactory.create("RewardDataImpl");
|
||||
}
|
||||
|
||||
|
@ -32,4 +38,19 @@ public class RewardDataImpl implements RewardData {
|
|||
public CompletableFuture<Integer> getTotalReward(String childId) { // TODO: localCacheを使う
|
||||
return CompletableFuture.supplyAsync(() -> ksActions.syncHistory(childId).join().stream().mapToInt(HistoryModel::getReward).sum());
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<List<HistoryModel>> getRewardHistoryList() { // TODO: localCacheを使う
|
||||
List<HistoryModel> historyModels = new ArrayList<>();
|
||||
return childData.getChildListDirect().thenAccept(childModels -> {
|
||||
childModels.forEach(childModel -> {
|
||||
historyModels.addAll(ksActions.syncHistory(childModel.getId()).join());
|
||||
});
|
||||
}).thenApply(v -> historyModels);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<List<HistoryModel>> getRewardHistoryList(String childId) { // TODO: localCacheを使う
|
||||
return CompletableFuture.supplyAsync(() -> ksActions.syncHistory(childId).join());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package one.nem.kidshift.feature.common;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
@ -11,10 +12,13 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
|||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.github.sundeepk.compactcalendarview.CompactCalendarView;
|
||||
import com.github.sundeepk.compactcalendarview.domain.Event;
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
@ -23,6 +27,7 @@ import javax.inject.Inject;
|
|||
|
||||
import dagger.hilt.android.AndroidEntryPoint;
|
||||
import one.nem.kidshift.data.ChildData;
|
||||
import one.nem.kidshift.data.RewardData;
|
||||
import one.nem.kidshift.data.TaskData;
|
||||
import one.nem.kidshift.feature.common.adapter.ChildListItemAdapter;
|
||||
import one.nem.kidshift.feature.common.adapter.TaskListItemAdapter;
|
||||
|
@ -47,6 +52,9 @@ public class CommonHomeFragment extends Fragment {
|
|||
ChildData childData;
|
||||
@Inject
|
||||
FabManager fabManager;
|
||||
@Inject
|
||||
RewardData rewardData;
|
||||
|
||||
|
||||
private boolean isChildMode;
|
||||
private String childId;
|
||||
|
@ -114,6 +122,8 @@ public class CommonHomeFragment extends Fragment {
|
|||
swipeRefreshLayout = view.findViewById(R.id.swipeRefreshLayout);
|
||||
swipeRefreshLayout.setOnRefreshListener(this::updateData);
|
||||
|
||||
initCalender();
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
|
@ -235,8 +245,30 @@ public class CommonHomeFragment extends Fragment {
|
|||
* @return CompletableFuture<Void>
|
||||
*/
|
||||
private CompletableFuture<Void> updateCalender() {
|
||||
// TODO: タスクの完了状況をカレンダーに表示
|
||||
return CompletableFuture.completedFuture(null);
|
||||
return rewardData.getRewardHistoryList().thenAccept(historyModels -> {
|
||||
historyModels.forEach(historyModel -> {
|
||||
compactCalendarView.addEvent(new Event(Color.RED, historyModel.getRegisteredAt().getTime(), historyModel.getTaskName())); // debug
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
private void initCalender() {
|
||||
compactCalendarView.setListener(new CompactCalendarView.CompactCalendarViewListener() {
|
||||
@Override
|
||||
public void onDayClick(Date date) { // Test
|
||||
List<Event> events = compactCalendarView.getEvents(date);
|
||||
new MaterialAlertDialogBuilder(requireContext())
|
||||
.setTitle(date.toString())
|
||||
.setMessage(events.toString())
|
||||
.setPositiveButton("OK", (dialog, which) -> dialog.dismiss())
|
||||
.show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMonthScroll(Date date) {
|
||||
// Do nothing
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue
Block a user