NotesPresenter.kt 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package com.sirekanyan.knigopis.feature.notes
  2. import com.sirekanyan.knigopis.common.BasePresenter
  3. import com.sirekanyan.knigopis.common.Presenter
  4. import com.sirekanyan.knigopis.common.extensions.io2main
  5. import com.sirekanyan.knigopis.common.extensions.showProgressBar
  6. import com.sirekanyan.knigopis.common.functions.logError
  7. import com.sirekanyan.knigopis.feature.PagesPresenter
  8. import com.sirekanyan.knigopis.model.CurrentTab
  9. import com.sirekanyan.knigopis.model.NoteModel
  10. import com.sirekanyan.knigopis.repository.NoteRepository
  11. interface NotesPresenter : Presenter {
  12. fun refresh()
  13. interface Router {
  14. fun openUserScreen(id: String, name: String, image: String?)
  15. }
  16. }
  17. class NotesPresenterImpl(
  18. private val router: NotesPresenter.Router,
  19. private val noteRepository: NoteRepository
  20. ) : BasePresenter<NotesView>(),
  21. NotesPresenter,
  22. NotesView.Callbacks {
  23. lateinit var parent: PagesPresenter
  24. override fun refresh() {
  25. noteRepository.observeNotes()
  26. .io2main()
  27. .showProgressBar(view)
  28. .bind({ notes ->
  29. view.updateNotes(notes)
  30. }, {
  31. logError("cannot load notes", it)
  32. view.showNotesError(it)
  33. })
  34. }
  35. override fun onNoteClicked(note: NoteModel) {
  36. router.openUserScreen(note.userId, note.userName, note.userImage)
  37. }
  38. override fun onNotesUpdated() {
  39. parent.onPageUpdated(CurrentTab.NOTES_TAB)
  40. }
  41. }