30 lines
943 B
Dart
30 lines
943 B
Dart
import 'package:freezed_annotation/freezed_annotation.dart';
|
|
import 'package:trainhub_flutter/domain/entities/workout_activity.dart';
|
|
|
|
part 'workout_session_state.freezed.dart';
|
|
|
|
@freezed
|
|
class WorkoutSessionState with _$WorkoutSessionState {
|
|
const factory WorkoutSessionState({
|
|
required List<WorkoutActivityEntity> activities,
|
|
@Default(0) int currentIndex,
|
|
@Default(0) int timeRemaining,
|
|
@Default(0) int totalTimeElapsed,
|
|
@Default(false) bool isRunning,
|
|
@Default(false) bool isFinished,
|
|
}) = _WorkoutSessionState;
|
|
|
|
const WorkoutSessionState._();
|
|
|
|
WorkoutActivityEntity? get currentActivity =>
|
|
currentIndex < activities.length ? activities[currentIndex] : null;
|
|
|
|
WorkoutActivityEntity? get nextActivity =>
|
|
currentIndex + 1 < activities.length
|
|
? activities[currentIndex + 1]
|
|
: null;
|
|
|
|
double get progress =>
|
|
activities.isEmpty ? 0.0 : currentIndex / activities.length;
|
|
}
|