From 544ee8eb54e3041a4ba3735b05d3ad899060c3fd Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Thu, 6 Jul 2023 15:12:19 +0530 Subject: [PATCH] Migrate OnboardingActivity to fragment Signed-off-by: Aayush Gupta --- app/src/main/AndroidManifest.xml | 8 +- ...rdingActivity.kt => OnboardingFragment.kt} | 105 +++++++----------- .../store/view/ui/splash/SplashFragment.kt | 8 ++ ...onboarding.xml => fragment_onboarding.xml} | 4 +- .../main/res/navigation/mobile_navigation.xml | 17 +++ 5 files changed, 71 insertions(+), 71 deletions(-) rename app/src/main/java/com/aurora/store/view/ui/onboarding/{OnboardingActivity.kt => OnboardingFragment.kt} (64%) rename app/src/main/res/layout/{activity_onboarding.xml => fragment_onboarding.xml} (96%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e4e547aab..0055f37cb 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -74,7 +74,8 @@ android:dataExtractionRules="@xml/backup_rules" tools:targetApi="m"> - @@ -82,11 +83,6 @@ - - - diff --git a/app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingActivity.kt b/app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingFragment.kt similarity index 64% rename from app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingActivity.kt rename to app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingFragment.kt index 510a8a01f..b572e153c 100644 --- a/app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingActivity.kt +++ b/app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingFragment.kt @@ -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 ) } } diff --git a/app/src/main/java/com/aurora/store/view/ui/splash/SplashFragment.kt b/app/src/main/java/com/aurora/store/view/ui/splash/SplashFragment.kt index 0e301ff42..fec153e9e 100644 --- a/app/src/main/java/com/aurora/store/view/ui/splash/SplashFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/splash/SplashFragment.kt @@ -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 diff --git a/app/src/main/res/layout/activity_onboarding.xml b/app/src/main/res/layout/fragment_onboarding.xml similarity index 96% rename from app/src/main/res/layout/activity_onboarding.xml rename to app/src/main/res/layout/fragment_onboarding.xml index aefdb2da0..8dfbd30aa 100644 --- a/app/src/main/res/layout/activity_onboarding.xml +++ b/app/src/main/res/layout/fragment_onboarding.xml @@ -19,9 +19,11 @@ + android:layout_height="match_parent" + tools:context=".view.ui.onboarding.OnboardingFragment"> + + + +