feat: check for primary user and SD Card installation in onboarding activity

This commit is contained in:
Akash Yadav
2023-12-21 20:41:40 +05:30
parent ddc0682693
commit df43bd4f63
2 changed files with 36 additions and 0 deletions
@@ -36,6 +36,9 @@ import com.itsaky.androidide.preferences.internal.prefManager
import com.itsaky.androidide.preferences.internal.statConsentDialogShown
import com.itsaky.androidide.ui.themes.IThemeManager
import com.itsaky.androidide.utils.Environment
import com.termux.shared.android.PackageUtils
import com.termux.shared.markdown.MarkdownUtils
import com.termux.shared.termux.TermuxConstants
class OnboardingActivity : AppIntro2() {
@@ -71,6 +74,30 @@ class OnboardingActivity : AppIntro2() {
addSlide(GreetingFragment())
if (!PackageUtils.isCurrentUserThePrimaryUser(this)) {
val errorMessage = getString(string.bootstrap_error_not_primary_user_message,
MarkdownUtils.getMarkdownCodeForString(TermuxConstants.TERMUX_PREFIX_DIR_PATH, false))
addSlide(OnboardingInfoFragment.newInstance(
getString(string.title_unsupported_user),
errorMessage,
R.drawable.ic_alert,
ContextCompat.getColor(this, R.color.color_error)
))
return
}
if (isInstalledOnSdCard()) {
val errorMessage = getString(string.bootstrap_error_installed_on_portable_sd,
MarkdownUtils.getMarkdownCodeForString(TermuxConstants.TERMUX_PREFIX_DIR_PATH, false))
addSlide(OnboardingInfoFragment.newInstance(
getString(string.title_install_location_error),
errorMessage,
R.drawable.ic_alert,
ContextCompat.getColor(this, R.color.color_error)
))
return
}
if (!checkDeviceSupported()) {
return
}
@@ -135,6 +162,13 @@ class OnboardingActivity : AppIntro2() {
(checkToolsIsInstalled() && statConsentDialogShown && PermissionsFragment.areAllPermissionsGranted(
this))
private fun isInstalledOnSdCard() : Boolean {
// noinspection SdCardPath
return PackageUtils.isAppInstalledOnExternalStorage(this) &&
TermuxConstants.TERMUX_FILES_DIR_PATH != filesDir.absolutePath
.replace("^/data/user/0/".toRegex(), "/data/data/")
}
private fun checkDeviceSupported(): Boolean {
val configProvider = IDEBuildConfigProvider.getInstance()
@@ -545,4 +545,6 @@
<string name="action_install_git">Install Git</string>
<string name="action_install_openssh">Install OpenSSH</string>
<string name="msg_terminal_new_sessions_disabled">Cannot create session. New sessions are disabled!</string>
<string name="title_install_location_error">Install location error</string>
<string name="title_unsupported_user">Unsupported user</string>
</resources>