#74 feed is now sorted on taskdates
This commit is contained in:
		
							parent
							
								
									260171a972
								
							
						
					
					
						commit
						3f6d416f39
					
				
					 1 changed files with 12 additions and 3 deletions
				
			
		|  | @ -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>): 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 | ||||
|         ) | ||||
|     } | ||||
| } | ||||
		Reference in a new issue
	
	 lbarraga
						lbarraga