Przeglądaj źródła

Moved refresh method to presenter

Vadik Sirekanyan 7 lat temu
rodzic
commit
a3cc193e03

+ 7 - 17
app/src/main/java/com/sirekanyan/knigopis/feature/MainActivity.kt

@@ -58,6 +58,7 @@ class MainActivity : BaseActivity(), Router, MainPresenter.Router {
         presenter = MainPresenterImpl(
             this,
             config,
+            auth,
             bookRepository,
             userRepository,
             noteRepository,
@@ -68,7 +69,7 @@ class MainActivity : BaseActivity(), Router, MainPresenter.Router {
         val currentTabId = savedInstanceState?.getInt(CURRENT_TAB_KEY)
         val currentTab = currentTabId?.let { CurrentTab.getByItemId(it) }
         val defaultTab = if (auth.isAuthorized()) HOME_TAB else NOTES_TAB
-        refresh(currentTab ?: defaultTab)
+        presenter.refresh(currentTab ?: defaultTab)
         initNavigationView()
         initToolbar(toolbar)
     }
@@ -80,14 +81,14 @@ class MainActivity : BaseActivity(), Router, MainPresenter.Router {
             refreshOptionsMenu()
             if (userLoggedIn) {
                 userLoggedIn = false
-                refresh()
+                presenter.refresh()
             }
         }, {
             logError("cannot check credentials", it)
         })
         if (booksChanged) {
             booksChanged = false
-            refresh(isForce = true)
+            presenter.refresh(isForce = true)
         }
         intent.data?.also { userUrl ->
             intent.data = null
@@ -144,7 +145,7 @@ class MainActivity : BaseActivity(), Router, MainPresenter.Router {
         if (presenter.currentTab == HOME_TAB || !auth.isAuthorized()) {
             super.onBackPressed()
         } else {
-            refresh(HOME_TAB)
+            presenter.refresh(HOME_TAB)
         }
     }
 
@@ -185,7 +186,7 @@ class MainActivity : BaseActivity(), Router, MainPresenter.Router {
         toolbar.setOnClickListener {
             if (presenter.currentTab == HOME_TAB) {
                 config.sortingMode = if (config.sortingMode == 0) 1 else 0
-                refresh(isForce = true)
+                presenter.refresh(isForce = true)
             }
         }
     }
@@ -196,7 +197,7 @@ class MainActivity : BaseActivity(), Router, MainPresenter.Router {
                 it.granted -> {
                     if (auth.isAuthorized()) {
                         auth.logout()
-                        refresh()
+                        presenter.refresh()
                     } else {
                         startActivityForResult(auth.getTokenRequest(), ULOGIN_REQUEST_CODE)
                     }
@@ -235,10 +236,6 @@ class MainActivity : BaseActivity(), Router, MainPresenter.Router {
         })
     }
 
-    override fun forceRefresh() {
-        refresh(isForce = true)
-    }
-
     private fun refreshOptionsMenu() {
         initNavigationView()
         auth.isAuthorized().let { authorized ->
@@ -247,11 +244,4 @@ class MainActivity : BaseActivity(), Router, MainPresenter.Router {
         }
     }
 
-    private fun refresh(tab: CurrentTab? = null, isForce: Boolean = false) {
-        val t = if (auth.isAuthorized()) (tab ?: presenter.currentTab) else NOTES_TAB
-        presenter.currentTab = t
-        presenter.showPage(t, isForce)
-        bottomNavigation.selectedItemId = t.itemId
-    }
-
 }

+ 15 - 8
app/src/main/java/com/sirekanyan/knigopis/feature/MainPresenter.kt

@@ -13,21 +13,17 @@ import com.sirekanyan.knigopis.model.CurrentTab
 import com.sirekanyan.knigopis.model.CurrentTab.*
 import com.sirekanyan.knigopis.model.NoteModel
 import com.sirekanyan.knigopis.model.UserModel
-import com.sirekanyan.knigopis.repository.BookRepository
-import com.sirekanyan.knigopis.repository.Configuration
-import com.sirekanyan.knigopis.repository.NoteRepository
-import com.sirekanyan.knigopis.repository.UserRepository
+import com.sirekanyan.knigopis.repository.*
 import io.reactivex.Flowable
 
 interface MainPresenter : Presenter {
 
     var currentTab: CurrentTab
-
+    fun refresh(tab: CurrentTab? = null, isForce: Boolean = false)
     fun showPage(tab: CurrentTab, isForce: Boolean)
 
     interface Router {
         fun login()
-        fun forceRefresh()
         fun openProfileScreen()
         fun reopenScreen()
         fun openNewBookScreen()
@@ -40,6 +36,7 @@ interface MainPresenter : Presenter {
 class MainPresenterImpl(
     private val router: MainPresenter.Router,
     private val config: Configuration,
+    private val auth: KAuth,
     private val bookRepository: BookRepository,
     private val userRepository: UserRepository,
     private val noteRepository: NoteRepository,
@@ -49,6 +46,16 @@ class MainPresenterImpl(
     override lateinit var currentTab: CurrentTab
     private val loadedTabs = mutableSetOf<CurrentTab>()
 
+    override fun refresh(tab: CurrentTab?, isForce: Boolean) {
+        if (!auth.isAuthorized()) {
+            currentTab = NOTES_TAB
+        } else if (tab != null) {
+            currentTab = tab
+        }
+        showPage(currentTab, isForce)
+        view.setNavigation(currentTab.itemId)
+    }
+
     override fun showPage(tab: CurrentTab, isForce: Boolean) {
         view.showPage(tab)
         val isFirst = !loadedTabs.contains(tab)
@@ -83,7 +90,7 @@ class MainPresenterImpl(
     }
 
     override fun onRefreshSwiped() {
-        router.forceRefresh()
+        refresh(isForce = true)
     }
 
     override fun onBookClicked(book: BookDataModel) {
@@ -106,7 +113,7 @@ class MainPresenterImpl(
         bookRepository.deleteBook(book)
             .io2main()
             .bind({
-                router.forceRefresh()
+                refresh(isForce = true)
             }, {
                 view.showBookDeleteError()
                 logError("cannot delete finished book", it)

+ 5 - 0
app/src/main/java/com/sirekanyan/knigopis/feature/MainView.kt

@@ -38,6 +38,7 @@ interface MainView : BooksView, UsersView, NotesView {
     fun showProgress()
     fun hideProgress()
     fun hideSwipeRefresh()
+    fun setNavigation(itemId: Int)
 
     interface Callbacks : BooksView.Callbacks, UsersView.Callbacks, NotesView.Callbacks {
         fun onLoginOptionClicked()
@@ -166,6 +167,10 @@ class MainViewImpl(
         swipeRefresh.isRefreshing = false
     }
 
+    override fun setNavigation(itemId: Int) {
+        bottomNavigation.selectedItemId = itemId
+    }
+
     override fun showBookActions(book: BookDataModel) {
         val bookFullTitle = resources.getFullTitleString(book.title, book.author)
         dialogs.showDialog(