Guest User

Untitled

a guest
May 28th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.15 KB | None | 0 0
  1. @InjectViewState
  2. class ActivityPresenter : BasePresenter<IActivityView>(), IActivityPresenter {
  3.  
  4.     companion object {
  5.         private const val IDENTIFIER: Long = 1
  6.     }
  7.  
  8.     private var backPressed: Long = 0
  9.     private var isCrossFaded = false
  10.  
  11.     private var mBarMode: ActionBarMode? = null
  12.     private var mContentUnderToolbar: Boolean = false
  13.  
  14.     private val tokenManager: TokenManager
  15.     private var mUserPreferences: UserPreferences
  16.  
  17.     init {
  18.         mMVPComponent.inject(this)
  19.         tokenManager = mStorageComponent.tokenManager()
  20.         mUserPreferences = mStorageComponent.userPref()
  21.     }
  22.  
  23.     override fun onFirstViewAttach() {
  24.         if (tokenManager.hasToken()) {
  25.             navigateToNextScreen()
  26.         } else {
  27.             navigateTo(WELCOME_SCREEN)
  28.         }
  29.     }
  30.  
  31.     override fun handlingOrientation() {
  32.         if (!isTablet()) viewState.setOrientationPortrait()
  33.     }
  34.  
  35.     override fun backPressed(countOfFragments: Int) {
  36.         if (isCrossFaded) {
  37.             viewState.crossFade()
  38.             return
  39.         }
  40.  
  41.         if (countOfFragments == 1) {
  42.             backPressed()
  43.         } else {
  44.             back()
  45.         }
  46.     }
  47.  
  48.     override fun drawerItemClick(drawerTitle: String) {
  49.         val context = AndroidApplication.getInstance()
  50.  
  51.         if (drawerTitle.equals(context.getString(R.string.home), ignoreCase = true)) {
  52.             replaceScreen(MAIN_SCREEN)
  53.             return
  54.         }
  55.  
  56.         if (drawerTitle.equals(context.getString(R.string.how_to_play), ignoreCase = true)) {
  57.             navigateTo(WEB_PAGE_SCREEN, HOW_TO_PLAY)
  58.             return
  59.         }
  60.  
  61.         if (drawerTitle.equals(context.getString(R.string.settings), ignoreCase = true)) {
  62.             navigateTo(SETTINGS_SCREEN, drawerTitle)
  63.             return
  64.         }
  65.  
  66.         if (drawerTitle.equals(context.getString(R.string.log_out), ignoreCase = true)) {
  67.             viewState.crossFade()
  68.             viewState.showConfirmLogoutDialog()
  69.             return
  70.         }
  71.  
  72.         replaceScreen(BIMBO_SCREEN, drawerTitle)
  73.     }
  74.  
  75.     override fun initNavDrawer() {
  76.         createAccountHeader()
  77.     }
  78.  
  79.     override fun setFirstActionBarMode() {
  80.         changeMode()
  81.     }
  82.  
  83.     override fun changeToolbarMode(toolbarMode: ActionBarMode, contentUnderToolbar: Boolean) {
  84.         mBarMode = toolbarMode
  85.         mContentUnderToolbar = contentUnderToolbar
  86.         changeMode()
  87.     }
  88.  
  89.     override fun onClickHome() {
  90.         if (mBarMode == ActionBarMode.LOGGED_IN_MAIN) {
  91.             viewState.crossFade()
  92.         } else {
  93.             viewState.backPressed()
  94.         }
  95.     }
  96.  
  97.     override fun onClickMenuActionSearch() {
  98.         viewState.provideMenuActionSearchToFragment()
  99.     }
  100.  
  101.     override fun onClickMenuActionCustom() {
  102.         viewState.provideMenuActionCustomToFragment()
  103.     }
  104.  
  105.     override fun isCrossFaded(isCrossFaded: Boolean) {
  106.         this.isCrossFaded = isCrossFaded
  107.     }
  108.  
  109.     override fun updateUserProfile() {
  110.         val profile = getProfileWithIdentifier()
  111.         viewState.setDrawerUserProfile(profile)
  112.     }
  113.  
  114.     override fun drawerHeaderClick() {
  115.         navigateTo(PROFILE_SCREEN)
  116.         viewState.crossFade()
  117.     }
  118.  
  119.     override fun toolbarTitleOnClick() {
  120.         viewState.provideToolbarTitleOnClickToFragment()
  121.     }
  122.  
  123.     override fun toolbarSubTitleOnClick() {
  124.         viewState.provideToolbarTitleOnClickToFragment()
  125.     }
  126.  
  127.     override fun toolbarTitleTextChanged(newText: String) {
  128.         viewState.provideToolbarTitleTextChangedToFragment(newText)
  129.     }
  130.  
  131.     override fun toolbarTitleActionDone(text: String) {
  132.         viewState.provideToolbarTitleActionDoneToFragment(text)
  133.     }
  134.  
  135.     override fun toolbarTitleFocusChange(hasFocus: Boolean) {
  136.         viewState.provideToolbarTitleFocusChange(hasFocus)
  137.     }
  138.  
  139.     override fun confirmLogoutDialogClicked(button: Int) {
  140.         if (button == Dialog.BUTTON_POSITIVE) {
  141.             userLogout()
  142.             newRootScreen(WELCOME_SCREEN)
  143.         }
  144.     }
  145.  
  146.     private fun userLogout() {
  147.         InstanceIdService.deleteToken { tokenManager.clearPreferences() }
  148.     }
  149.  
  150.     private fun navigateToNextScreen() {
  151.         if (mUserPreferences.getUser().acceptedEula) {
  152.             navigateTo(MAIN_SCREEN)
  153.         } else {
  154.             newRootScreen(WEB_PAGE_SCREEN, NEW_TERMS_AND_CONDITIONS)
  155.         }
  156.     }
  157.  
  158.     private fun changeMode() {
  159.         mContentUnderToolbar.let {
  160.             when (mBarMode) {
  161.                 ActionBarMode.HIDE -> viewState.hideActionMode(it)
  162.                 ActionBarMode.SIMPLE -> viewState.simpleActionMode(it)
  163.                 ActionBarMode.LOGGED_IN_MAIN -> viewState.mainInActionMode(it)
  164.                 ActionBarMode.EDIT -> viewState.editActionMode(it)
  165.                 ActionBarMode.DONE -> viewState.doneActionMode(it)
  166.                 ActionBarMode.USER_POINTS -> viewState.userPointsActionMode(it)
  167.                 ActionBarMode.SEARCH_FILTER -> viewState.searchSortActionMode(it)
  168.                 ActionBarMode.SIMPLE_WITH_PICTURE_IN_END ->
  169.                     viewState.simpleWithPictureInEndActionMode(it)
  170.             }
  171.         }
  172.     }
  173.  
  174.     private fun backPressed() {
  175.         val pressAgain = AndroidApplication.getInstance().getString(R.string.pressAgain)
  176.         if (backPressed + TWO_THOUSAND > System.currentTimeMillis()) {
  177.             viewState.exit()
  178.         } else {
  179.             viewState.showToast(pressAgain)
  180.         }
  181.         backPressed = System.currentTimeMillis()
  182.     }
  183.  
  184.     private fun createAccountHeader() {
  185.         val profile = getProfileWithIdentifier()
  186.         viewState.buildAccountHeader(profile)
  187.     }
  188.  
  189.     private fun getProfileWithIdentifier(): ProfileDrawerItem {
  190.         val user = mUserPreferences.getUser()
  191.         return ProfileDrawerItem().withIdentifier(IDENTIFIER).apply {
  192.  
  193.             if (user.fullName.isNotBlank())
  194.                 withName(user.fullName)
  195.  
  196.             if (!user.image?.getUrl().isNullOrBlank())
  197.                 withIcon(user.image?.getUrl())
  198.             else
  199.                 withIcon(ContextCompat.getDrawable(AndroidApplication.getInstance(),
  200.                         R.drawable.ic_member))
  201.         }
  202.     }
  203.  
  204. }
Advertisement
Add Comment
Please, Sign In to add comment