Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class ScheduleRepository(
- private val service: ScheduleService,
- private val lessonsDAO: LessonsDAO
- ) {
- val schedule: ScheduleResponse? get() = scheduleLiveData.value
- private val scheduleLiveData = MutableLiveData<ScheduleResponse>()
- private var observer: Observer<ScheduleResponse>? = null
- fun subscribe(callback: (ScheduleResponse) -> Unit) {
- observer = Observer(callback).also {
- scheduleLiveData.observeForever(callback)
- }
- }
- fun unsubscribe() = observer?.let(scheduleLiveData::removeObserver)
- suspend fun initSchedule(group: String?) {
- val lessons = lessonsDAO.getLessons()
- scheduleLiveData.postValue(ScheduleResponse(null, ArrayList(lessons)))
- loadSchedule(group)
- }
- suspend fun loadSchedule(group: String?) {
- service.getSchedule(group?.toHttpQueryFormat()).also {
- scheduleLiveData.postValue(it)
- saveSchedule(it.schedule)
- }
- }
- private suspend fun saveSchedule(lessons: ArrayList<Lesson>) {
- lessonsDAO.deleteAll()
- lessonsDAO.insertAll(lessons)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement