diff --git a/app/src/main/java/be/ugent/sel/studeez/domain/implementation/FirebaseFeedDAO.kt b/app/src/main/java/be/ugent/sel/studeez/domain/implementation/FirebaseFeedDAO.kt index c406b45..d742bf3 100644 --- a/app/src/main/java/be/ugent/sel/studeez/domain/implementation/FirebaseFeedDAO.kt +++ b/app/src/main/java/be/ugent/sel/studeez/domain/implementation/FirebaseFeedDAO.kt @@ -7,6 +7,7 @@ import be.ugent.sel.studeez.data.local.models.task.Task import be.ugent.sel.studeez.domain.FeedDAO import be.ugent.sel.studeez.domain.SessionDAO import be.ugent.sel.studeez.domain.TaskDAO +import com.google.firebase.Timestamp import kotlinx.coroutines.flow.* import javax.inject.Inject @@ -22,15 +23,22 @@ class FirebaseFeedDAO @Inject constructor( .map { sessionReport -> sessionToFeedEntry(sessionReport) } .groupBy { it.taskId } .map { fuseFeedEntries(it.component2()) } + .sortedByDescending { it.endTime } } } private fun fuseFeedEntries(entries: List): FeedEntry = entries.fold(entries[0]) { accEntry, newEntry -> - val newStudyTime = accEntry.totalStudyTime + newEntry.totalStudyTime - accEntry.copy(totalStudyTime = newStudyTime) + accEntry.copy( + totalStudyTime = accEntry.totalStudyTime + newEntry.totalStudyTime, + endTime = getMostRecent(accEntry.endTime, newEntry.endTime) + ) } + private fun getMostRecent(t1: Timestamp, t2: Timestamp): Timestamp { + return if (t1 < t2) t2 else t1 + } + private suspend fun sessionToFeedEntry(sessionReport: SessionReport): FeedEntry { val subjectId: String = sessionReport.subjectId @@ -45,7 +53,8 @@ class FirebaseFeedDAO @Inject constructor( taskName = task.name, taskId = task.id, subjectId = subject.id, - totalStudyTime = sessionReport.studyTime + totalStudyTime = sessionReport.studyTime, + endTime = sessionReport.endTime ) } } \ No newline at end of file