HOME 퀘스트 줄 분류 · 일시 정지 표기
This commit is contained in:
@@ -156,8 +156,17 @@ class FirestoreQuestRepository implements QuestRepository {
|
||||
return _walkSteps > 0 ? _walkSteps : null;
|
||||
}
|
||||
|
||||
/// 목록 카드가 「일시 정지」로 보는 세션 — 진행완료가 아니고 Walk 가 아닌 남은 세션(앱이 꺼진
|
||||
/// inProgress 포함). 카드 단계 판정([QuestStage.paused])과 같은 규칙이다. 아니면 null.
|
||||
static QuestSession? pausedSessionOf(QuestType type, Map<String, dynamic> progress) {
|
||||
final s = sessionOf(progress);
|
||||
return s == null || type == QuestType.steps || s.state == QuestStage.completed
|
||||
? null
|
||||
: s;
|
||||
}
|
||||
|
||||
/// 진행 세션(`questProgress.session` — `fn-quest-progress` 만 쓴다 · 원장 C-83).
|
||||
static QuestSession? _sessionOf(Map<String, dynamic> progress) {
|
||||
static QuestSession? sessionOf(Map<String, dynamic> progress) {
|
||||
final raw = progress['session'];
|
||||
if (raw is! Map) return null;
|
||||
final m = Map<String, dynamic>.from(raw);
|
||||
@@ -229,7 +238,7 @@ class FirestoreQuestRepository implements QuestRepository {
|
||||
: type == QuestType.musicShake
|
||||
? quest.intOr('bpm')
|
||||
: dailyLimit;
|
||||
final session = _sessionOf(progress);
|
||||
final session = sessionOf(progress);
|
||||
final cardGoal = authorUid.isEmpty ? goal : quest.intOr('goal', 1);
|
||||
// 걸음은 화면 밖 걸음까지 실제 값(C-62) — 오늘 걸음, 없으면 세션의 마지막 값.
|
||||
final walked = steps && session != null ? walk ?? session.progress : null;
|
||||
|
||||
Reference in New Issue
Block a user