Advertisement
Guest User

Untitled

a guest
Feb 20th, 2020
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 1.13 KB | None | 0 0
  1. class ScheduleRepository(
  2.     private val service: ScheduleService,
  3.     private val lessonsDAO: LessonsDAO
  4. ) {
  5.  
  6.     val schedule: ScheduleResponse? get() = scheduleLiveData.value
  7.  
  8.     private val scheduleLiveData = MutableLiveData<ScheduleResponse>()
  9.  
  10.     private var observer: Observer<ScheduleResponse>? = null
  11.  
  12.     fun subscribe(callback: (ScheduleResponse) -> Unit) {
  13.         observer = Observer(callback).also {
  14.             scheduleLiveData.observeForever(callback)
  15.         }
  16.     }
  17.  
  18.     fun unsubscribe() = observer?.let(scheduleLiveData::removeObserver)
  19.  
  20.     suspend fun initSchedule(group: String?) {
  21.         val lessons = lessonsDAO.getLessons()
  22.         scheduleLiveData.postValue(ScheduleResponse(null, ArrayList(lessons)))
  23.         loadSchedule(group)
  24.     }
  25.  
  26.     suspend fun loadSchedule(group: String?) {
  27.         service.getSchedule(group?.toHttpQueryFormat()).also {
  28.             scheduleLiveData.postValue(it)
  29.             saveSchedule(it.schedule)
  30.         }
  31.     }
  32.  
  33.     private suspend fun saveSchedule(lessons: ArrayList<Lesson>) {
  34.         lessonsDAO.deleteAll()
  35.         lessonsDAO.insertAll(lessons)
  36.     }
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement