Migrate OnboardingActivity to fragment
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -74,7 +74,8 @@
|
||||
android:dataExtractionRules="@xml/backup_rules"
|
||||
tools:targetApi="m">
|
||||
|
||||
<activity android:name=".view.ui.onboarding.OnboardingActivity"
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
@@ -82,11 +83,6 @@
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:exported="true">
|
||||
<nav-graph android:value="@navigation/mobile_navigation" />
|
||||
</activity>
|
||||
|
||||
|
||||
@@ -19,20 +19,18 @@
|
||||
|
||||
package com.aurora.store.view.ui.onboarding
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.activity.addCallback
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.viewpager2.adapter.FragmentStateAdapter
|
||||
import androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback
|
||||
import com.aurora.Constants
|
||||
import com.aurora.extensions.isSAndAbove
|
||||
import com.aurora.extensions.open
|
||||
import com.aurora.store.MainActivity
|
||||
import com.aurora.store.R
|
||||
import com.aurora.store.data.work.UpdateWorker
|
||||
import com.aurora.store.databinding.ActivityOnboardingBinding
|
||||
import com.aurora.store.databinding.FragmentOnboardingBinding
|
||||
import com.aurora.store.util.Preferences
|
||||
import com.aurora.store.util.Preferences.PREFERENCE_AUTO_DELETE
|
||||
import com.aurora.store.util.Preferences.PREFERENCE_DEFAULT
|
||||
@@ -52,115 +50,94 @@ import com.aurora.store.util.Preferences.PREFERENCE_THEME_TYPE
|
||||
import com.aurora.store.util.Preferences.PREFERENCE_UPDATES_CHECK
|
||||
import com.aurora.store.util.Preferences.PREFERENCE_UPDATES_EXTENDED
|
||||
import com.aurora.store.util.save
|
||||
import com.aurora.store.view.ui.commons.BaseActivity
|
||||
import com.google.android.material.tabs.TabLayoutMediator
|
||||
|
||||
class OnboardingActivity : BaseActivity() {
|
||||
class OnboardingFragment : Fragment(R.layout.fragment_onboarding) {
|
||||
|
||||
lateinit var B: ActivityOnboardingBinding
|
||||
private var _binding: FragmentOnboardingBinding? = null
|
||||
private val binding: FragmentOnboardingBinding
|
||||
get() = _binding!!
|
||||
|
||||
override fun onConnected() {}
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
_binding = FragmentOnboardingBinding.bind(view)
|
||||
|
||||
override fun onDisconnected() {}
|
||||
|
||||
override fun onReconnected() {}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
val isIntroDone = Preferences.getBoolean(this, PREFERENCE_INTRO)
|
||||
if (isIntroDone) {
|
||||
runOnUiThread { open(MainActivity::class.java, true) }
|
||||
return
|
||||
}
|
||||
|
||||
val isDefaultPrefLoaded = Preferences.getBoolean(this, PREFERENCE_DEFAULT)
|
||||
val isDefaultPrefLoaded = Preferences.getBoolean(requireContext(), PREFERENCE_DEFAULT)
|
||||
if (!isDefaultPrefLoaded) {
|
||||
save(PREFERENCE_DEFAULT, true)
|
||||
loadDefaultPreferences()
|
||||
}
|
||||
|
||||
B = ActivityOnboardingBinding.inflate(layoutInflater)
|
||||
|
||||
setContentView(B.root)
|
||||
|
||||
attachViewPager()
|
||||
|
||||
B.btnForward.setOnClickListener {
|
||||
binding.btnForward.setOnClickListener {
|
||||
moveForward()
|
||||
}
|
||||
|
||||
B.btnBackward.setOnClickListener {
|
||||
binding.btnBackward.setOnClickListener {
|
||||
moveBackward()
|
||||
}
|
||||
|
||||
if (!Preferences.getBoolean(this, Preferences.PREFERENCE_TOS_READ)) {
|
||||
askToReadTOS()
|
||||
}
|
||||
|
||||
onNewIntent(intent)
|
||||
|
||||
onBackPressedDispatcher.addCallback(this) {
|
||||
if (B.viewpager2.currentItem == 0) {
|
||||
finish()
|
||||
activity?.onBackPressedDispatcher?.addCallback(this) {
|
||||
if (binding.viewpager2.currentItem == 0) {
|
||||
activity?.finish()
|
||||
} else {
|
||||
B.viewpager2.currentItem = B.viewpager2.currentItem - 1
|
||||
binding.viewpager2.currentItem = binding.viewpager2.currentItem - 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onNewIntent(intent: Intent?) {
|
||||
super.onNewIntent(intent)
|
||||
intent?.let {
|
||||
val pos = intent.getIntExtra(Constants.INT_EXTRA, 0)
|
||||
B.viewpager2.setCurrentItem(pos, false)
|
||||
}
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
_binding = null
|
||||
}
|
||||
|
||||
private fun attachViewPager() {
|
||||
B.viewpager2.adapter = PagerAdapter(this)
|
||||
B.viewpager2.isUserInputEnabled = false
|
||||
B.viewpager2.setCurrentItem(0, true)
|
||||
B.viewpager2.registerOnPageChangeCallback(object : OnPageChangeCallback() {
|
||||
binding.viewpager2.adapter = PagerAdapter(requireActivity())
|
||||
binding.viewpager2.isUserInputEnabled = false
|
||||
binding.viewpager2.setCurrentItem(0, true)
|
||||
binding.viewpager2.registerOnPageChangeCallback(object : OnPageChangeCallback() {
|
||||
override fun onPageSelected(position: Int) {
|
||||
runOnUiThread {
|
||||
activity?.runOnUiThread {
|
||||
lastPosition = position
|
||||
refreshButtonState()
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
TabLayoutMediator(B.tabLayout, B.viewpager2, true) { tab, position ->
|
||||
TabLayoutMediator(binding.tabLayout, binding.viewpager2, true) { tab, position ->
|
||||
tab.text = (position + 1).toString()
|
||||
}.attach()
|
||||
}
|
||||
|
||||
private fun moveForward() {
|
||||
B.viewpager2.setCurrentItem(B.viewpager2.currentItem + 1, true)
|
||||
binding.viewpager2.setCurrentItem(binding.viewpager2.currentItem + 1, true)
|
||||
}
|
||||
|
||||
private fun moveBackward() {
|
||||
B.viewpager2.setCurrentItem(B.viewpager2.currentItem - 1, true)
|
||||
binding.viewpager2.setCurrentItem(binding.viewpager2.currentItem - 1, true)
|
||||
}
|
||||
|
||||
var lastPosition = 0
|
||||
|
||||
fun refreshButtonState() {
|
||||
B.btnBackward.isEnabled = lastPosition != 0
|
||||
B.btnForward.isEnabled = lastPosition != 4
|
||||
binding.btnBackward.isEnabled = lastPosition != 0
|
||||
binding.btnForward.isEnabled = lastPosition != 4
|
||||
if (lastPosition == 4) {
|
||||
B.btnForward.text = getString(R.string.action_finish)
|
||||
B.btnForward.isEnabled = true
|
||||
B.btnForward.setOnClickListener {
|
||||
binding.btnForward.text = getString(R.string.action_finish)
|
||||
binding.btnForward.isEnabled = true
|
||||
binding.btnForward.setOnClickListener {
|
||||
save(PREFERENCE_INTRO, true)
|
||||
UpdateWorker.scheduleAutomatedCheck(this)
|
||||
open(MainActivity::class.java, true)
|
||||
UpdateWorker.scheduleAutomatedCheck(requireContext())
|
||||
findNavController().navigate(
|
||||
OnboardingFragmentDirections.actionOnboardingFragmentToSplashFragment()
|
||||
)
|
||||
}
|
||||
} else {
|
||||
B.btnForward.text = getString(R.string.action_next)
|
||||
B.btnForward.setOnClickListener {
|
||||
B.viewpager2.setCurrentItem(
|
||||
B.viewpager2.currentItem + 1, true
|
||||
binding.btnForward.text = getString(R.string.action_next)
|
||||
binding.btnForward.setOnClickListener {
|
||||
binding.viewpager2.setCurrentItem(
|
||||
binding.viewpager2.currentItem + 1, true
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -31,6 +31,8 @@ import com.aurora.store.R
|
||||
import com.aurora.store.data.AuthState
|
||||
import com.aurora.store.data.event.BusEvent
|
||||
import com.aurora.store.databinding.FragmentSplashBinding
|
||||
import com.aurora.store.util.Preferences
|
||||
import com.aurora.store.util.Preferences.PREFERENCE_INTRO
|
||||
import com.aurora.store.viewmodel.auth.AuthViewModel
|
||||
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
@@ -55,6 +57,12 @@ class SplashFragment : Fragment(R.layout.fragment_splash) {
|
||||
// Toolbar
|
||||
binding.layoutToolbarAction.toolbar.elevation = 0f
|
||||
|
||||
if (!Preferences.getBoolean(requireContext(), PREFERENCE_INTRO)) {
|
||||
findNavController().navigate(
|
||||
SplashFragmentDirections.actionSplashFragmentToOnboardingFragment()
|
||||
)
|
||||
}
|
||||
|
||||
attachActions()
|
||||
|
||||
//Initial status
|
||||
|
||||
@@ -19,9 +19,11 @@
|
||||
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
tools:context=".view.ui.onboarding.OnboardingFragment">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
@@ -240,6 +240,12 @@
|
||||
app:launchSingleTop="true"
|
||||
app:popUpTo="@id/mobile_navigation"
|
||||
app:popUpToInclusive="true" />
|
||||
<action
|
||||
android:id="@+id/action_splashFragment_to_onboardingFragment"
|
||||
app:destination="@id/onboardingFragment"
|
||||
app:launchSingleTop="true"
|
||||
app:popUpTo="@id/mobile_navigation"
|
||||
app:popUpToInclusive="true" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/googleFragment"
|
||||
@@ -251,6 +257,17 @@
|
||||
app:popUpTo="@id/splashFragment"
|
||||
app:popUpToInclusive="true" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/onboardingFragment"
|
||||
android:name="com.aurora.store.view.ui.onboarding.OnboardingFragment"
|
||||
tools:layout="@layout/fragment_onboarding" >
|
||||
<action
|
||||
android:id="@+id/action_onboardingFragment_to_splashFragment"
|
||||
app:destination="@id/splashFragment"
|
||||
app:launchSingleTop="true"
|
||||
app:popUpTo="@id/mobile_navigation"
|
||||
app:popUpToInclusive="true" />
|
||||
</fragment>
|
||||
<action
|
||||
android:id="@+id/action_global_appDetailsFragment"
|
||||
app:destination="@id/appDetailsFragment" />
|
||||
|
||||
Reference in New Issue
Block a user