From 3f6d416f39446affee82ce284f0d3095b94257fc Mon Sep 17 00:00:00 2001 From: lbarraga Date: Sun, 7 May 2023 14:26:07 +0200 Subject: [PATCH] #74 feed is now sorted on taskdates --- .../domain/implementation/FirebaseFeedDAO.kt | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) 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