OnboardingFragment: Add new app links fragment

Request users Android S and above to enable play.google.com as a supported link
manually

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2023-08-21 15:25:36 +05:30
parent 004c3dd65c
commit e02347ec85
5 changed files with 185 additions and 7 deletions

View File

@@ -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
}
}
}

View File

@@ -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
}
}
}