#74 getFeedentries now returns a map with date as key and as value the entries for that day

This commit is contained in:
lbarraga 2023-05-07 16:10:32 +02:00
parent 3f6d416f39
commit f3a8c93a3e
2 changed files with 8 additions and 2 deletions

View file

@ -5,6 +5,6 @@ import kotlinx.coroutines.flow.Flow
interface FeedDAO {
fun getFeedEntries(): Flow<List<FeedEntry>>
fun getFeedEntries(): Flow<Map<String, List<FeedEntry>>>
}

View file

@ -1,5 +1,6 @@
package be.ugent.sel.studeez.domain.implementation
import android.icu.text.DateFormat
import be.ugent.sel.studeez.data.local.models.FeedEntry
import be.ugent.sel.studeez.data.local.models.SessionReport
import be.ugent.sel.studeez.data.local.models.task.Subject
@ -17,16 +18,21 @@ class FirebaseFeedDAO @Inject constructor(
private val subjectDAO: FireBaseSubjectDAO
) : FeedDAO {
override fun getFeedEntries(): Flow<List<FeedEntry>> {
override fun getFeedEntries(): Flow<Map<String, List<FeedEntry>>> {
return sessionDAO.getSessions().map {sessionReports ->
sessionReports
.map { sessionReport -> sessionToFeedEntry(sessionReport) }
.groupBy { it.taskId }
.map { fuseFeedEntries(it.component2()) }
.sortedByDescending { it.endTime }
.groupBy { getFormattedTime(it) }
}
}
private fun getFormattedTime(entry: FeedEntry): String {
return DateFormat.getDateInstance().format(entry.endTime.toDate())
}
private fun fuseFeedEntries(entries: List<FeedEntry>): FeedEntry =
entries.fold(entries[0]) { accEntry, newEntry ->
accEntry.copy(