@@ -28,6 +28,7 @@ import kotlinx.coroutines.launch
2828import kotlinx.coroutines.supervisorScope
2929import java.time.DayOfWeek
3030import java.time.LocalDate
31+ import java.time.OffsetDateTime
3132import java.time.format.TextStyle
3233import java.util.Locale
3334
@@ -212,13 +213,13 @@ class SportSignViewModel(private val myItmo: MyItmoApi, context: Context) : View
212213 val isAvailable = lesson.available > 0 && lesson.canSignIn.isCanSignIn
213214 // If "Show Only Available" is on, we hide full lessons, unless Auto Sign is ON (which might show them)
214215 // or if the user is already signed up.
215- val shouldShow = lesson.signed || ! state.showOnlyAvailable || isAvailable || (state.showAutoSign && lesson.canSignIn.isCanSignIn)
216+ val shouldShow = ! state.showOnlyAvailable || (lesson.dateEnd > OffsetDateTime .now() && (lesson.signed || isAvailable || (state.showAutoSign && lesson.canSignIn.isCanSignIn)) )
216217
217218 isToday && shouldShow
218219 }
219220 .map { createSportLessonData(it, isReal = true ) }
220221 // Filter again after mapping because createSportLessonData calculates precise unavailability reasons
221- .filter { item -> ! state.showOnlyAvailable || item.canSignIn || item.apiData.signed || (state.showAutoSign && item.apiData.available <= 0 ) }
222+ .filter { item -> ! state.showOnlyAvailable || ( item.apiData.dateEnd > OffsetDateTime .now() && (item. canSignIn || item.apiData.signed || (state.showAutoSign && item.apiData.available <= 0 )) ) }
222223
223224 // B. Phantom Lessons (Auto Sign suggestions based on history)
224225 val phantomLessons = if (state.showAutoSign) {
@@ -278,6 +279,7 @@ class SportSignViewModel(private val myItmo: MyItmoApi, context: Context) : View
278279 private fun createSportLessonData (lesson : SportLesson , isReal : Boolean ): SportLessonData {
279280 val reasons = if (isReal) UnavailableReason .getSortedUnavailableReasons(lesson) else {
280281 val allowed = setOf (
282+ UnavailableReason .LessonInPast ::class ,
281283 UnavailableReason .SelectionFailed ::class ,
282284 UnavailableReason .HealthGroupMismatch ::class ,
283285 UnavailableReason .Other ::class ,
0 commit comments