Newer
Older
CasicSmartTube / app / src / main / java / com / casic / smarttube / view / SplashScreenActivity.kt
package com.casic.smarttube.view

import android.annotation.SuppressLint
import android.os.Bundle
import android.os.CountDownTimer
import androidx.lifecycle.ViewModelProvider
import com.casic.smarttube.databinding.ActivitySplashBinding
import com.casic.smarttube.vm.UserViewModel
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.utils.ActivityStackManager
import com.pengxh.kt.lite.utils.LoadState

@SuppressLint("CustomSplashScreen")
class SplashScreenActivity : KotlinBaseActivity<ActivitySplashBinding>() {

    private lateinit var userDetailViewModel: UserViewModel

    override fun initViewBinding(): ActivitySplashBinding {
        return ActivitySplashBinding.inflate(layoutInflater)
    }

    override fun setupTopBarLayout() {
        ImmersionBar.with(this).statusBarDarkFont(false).init()
    }

    override fun initOnCreate(savedInstanceState: Bundle?) {
        ActivityStackManager.addActivity(this)
        userDetailViewModel = ViewModelProvider(this)[UserViewModel::class.java]
    }

    override fun observeRequestState() {
        userDetailViewModel.loadState.observe(this) {
            when (it) {
                LoadState.Success -> navigatePageTo<MainActivity>()
                else -> navigatePageTo<LoginActivity>()
            }
            finish()
        }
    }

    override fun initEvent() {
        countDownTimer.start()
    }

    private val countDownTimer = object : CountDownTimer(1000, 500) {
        override fun onFinish() {
            userDetailViewModel.getUserDetail()
        }

        override fun onTick(millisUntilFinished: Long) {

        }
    }
}