diff --git a/app/src/main/java/com/aurora/store/view/ui/onboarding/AppLinksFragment.kt b/app/src/main/java/com/aurora/store/view/ui/onboarding/AppLinksFragment.kt new file mode 100644 index 000000000..402b334ab --- /dev/null +++ b/app/src/main/java/com/aurora/store/view/ui/onboarding/AppLinksFragment.kt @@ -0,0 +1,86 @@ +package com.aurora.store.view.ui.onboarding + +import android.content.Intent +import android.content.pm.verify.domain.DomainVerificationManager +import android.content.pm.verify.domain.DomainVerificationUserState +import android.net.Uri +import android.os.Bundle +import android.provider.Settings.ACTION_APP_OPEN_BY_DEFAULT_SETTINGS +import android.view.View +import androidx.activity.result.contract.ActivityResultContracts +import androidx.fragment.app.Fragment +import com.aurora.extensions.isSAndAbove +import com.aurora.extensions.toast +import com.aurora.store.R +import com.aurora.store.databinding.FragmentAppLinksBinding + +class AppLinksFragment : Fragment(R.layout.fragment_app_links) { + + private var _binding: FragmentAppLinksBinding? = null + private val binding: FragmentAppLinksBinding + get() = _binding!! + + private val playStoreDomain = "play.google.com" + + private val startForResult = + registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + if (isSAndAbove() && playStoreDomainVerified()) { + toast(R.string.app_link_enabled) + } + updateButtonState() + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + _binding = FragmentAppLinksBinding.bind(view) + + updateButtonState() + if (isSAndAbove()) { + binding.btnAction.setOnClickListener { + val intent = Intent( + ACTION_APP_OPEN_BY_DEFAULT_SETTINGS, + Uri.parse("package:${view.context.packageName}") + ) + startForResult.launch(intent) + } + } + } + + override fun onDestroyView() { + _binding = null + super.onDestroyView() + } + + private fun updateButtonState() { + if (isSAndAbove()) { + if (playStoreDomainVerified()) { + binding.btnAction.apply { + text = getString(R.string.action_enabled) + isEnabled = false + } + } + } else { + binding.btnAction.apply { + text = getString(R.string.action_enabled) + isEnabled = false + } + } + } + + private fun playStoreDomainVerified(): Boolean { + return if (isSAndAbove()) { + val domainVerificationManager = requireContext().getSystemService( + DomainVerificationManager::class.java + ) + val userState = domainVerificationManager.getDomainVerificationUserState( + requireContext().packageName + ) + + val playStoreDomain = userState?.hostToStateMap?.filterKeys { it == playStoreDomain } + playStoreDomain?.values?.first() == DomainVerificationUserState.DOMAIN_STATE_SELECTED + } else { + true + } + } + +} diff --git a/app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingFragment.kt b/app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingFragment.kt index 6e3f24dca..e092012c6 100644 --- a/app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingFragment.kt @@ -117,8 +117,8 @@ class OnboardingFragment : Fragment(R.layout.fragment_onboarding) { fun refreshButtonState() { binding.btnBackward.isEnabled = lastPosition != 0 - binding.btnForward.isEnabled = lastPosition != 4 - if (lastPosition == 4) { + binding.btnForward.isEnabled = lastPosition != 5 + if (lastPosition == 5) { binding.btnForward.text = getString(R.string.action_finish) binding.btnForward.isEnabled = true binding.btnForward.setOnClickListener { @@ -175,13 +175,14 @@ class OnboardingFragment : Fragment(R.layout.fragment_onboarding) { 1 -> return InstallerFragment() 2 -> return ThemeFragment() 3 -> return AccentFragment() - 4 -> return PermissionsFragment() + 4 -> return AppLinksFragment() + 5 -> return PermissionsFragment() } return Fragment() } override fun getItemCount(): Int { - return 5 + return 6 } } } diff --git a/app/src/main/res/layout/fragment_app_links.xml b/app/src/main/res/layout/fragment_app_links.xml new file mode 100644 index 000000000..99be965b9 --- /dev/null +++ b/app/src/main/res/layout/fragment_app_links.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_onboarding_permissions.xml b/app/src/main/res/layout/fragment_onboarding_permissions.xml index 4c78012fc..603c3acef 100644 --- a/app/src/main/res/layout/fragment_onboarding_permissions.xml +++ b/app/src/main/res/layout/fragment_onboarding_permissions.xml @@ -57,6 +57,6 @@ android:padding="@dimen/padding_normal" android:scrollbars="none" app:itemSpacing="@dimen/margin_small" - tools:listitem="@layout/view_installer" /> + tools:listitem="@layout/view_permission" /> - \ No newline at end of file + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8d67ac066..9811b8d18 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -18,7 +18,8 @@ ~ You should have received a copy of the GNU General Public License ~ along with Aurora Store. If not, see . ~ - --> + --> + "BHIM - UPI" "Donate via UPI" "Bitcoin Cash" @@ -371,4 +372,11 @@ App Language Layout Select default tab + App Links + Aurora store can open supported links + Enable + Enabled + App link enabled! + play.google.com + Google Play, also known as the Google Play Store and formerly Android Market.