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