From df43bd4f63a6ebaaab5075dd336fd8167061e06e Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Thu, 21 Dec 2023 20:41:40 +0530 Subject: [PATCH] feat: check for primary user and SD Card installation in onboarding activity --- .../activities/OnboardingActivity.kt | 34 +++++++++++++++++++ resources/src/main/res/values/strings.xml | 2 ++ 2 files changed, 36 insertions(+) diff --git a/app/src/main/java/com/itsaky/androidide/activities/OnboardingActivity.kt b/app/src/main/java/com/itsaky/androidide/activities/OnboardingActivity.kt index bb91e9b54..0efe4dc7e 100644 --- a/app/src/main/java/com/itsaky/androidide/activities/OnboardingActivity.kt +++ b/app/src/main/java/com/itsaky/androidide/activities/OnboardingActivity.kt @@ -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() diff --git a/resources/src/main/res/values/strings.xml b/resources/src/main/res/values/strings.xml index 7688ef7b1..d6050128c 100644 --- a/resources/src/main/res/values/strings.xml +++ b/resources/src/main/res/values/strings.xml @@ -545,4 +545,6 @@ Install Git Install OpenSSH Cannot create session. New sessions are disabled! + Install location error + Unsupported user