diff --git a/app/src/main/java/com/aurora/store/util/AC2DMTask.kt b/app/src/main/java/com/aurora/store/util/AC2DMTask.kt index 05843a969..c15701f72 100644 --- a/app/src/main/java/com/aurora/store/util/AC2DMTask.kt +++ b/app/src/main/java/com/aurora/store/util/AC2DMTask.kt @@ -20,16 +20,17 @@ package com.aurora.store.util import com.aurora.store.data.network.HttpClient -import okhttp3.RequestBody.Companion.toRequestBody import java.util.Locale import javax.inject.Inject +import okhttp3.RequestBody.Companion.toRequestBody class AC2DMTask @Inject constructor(private val httpClient: HttpClient) { @Throws(Exception::class) fun getAC2DMResponse(email: String?, oAuthToken: String?): Map { - if (email == null || oAuthToken == null) + if (email == null || oAuthToken == null) { return mapOf() + } val params: MutableMap = hashMapOf() params["lang"] = Locale.getDefault().toString().replace("_", "-") diff --git a/app/src/main/java/com/aurora/store/util/CertUtil.kt b/app/src/main/java/com/aurora/store/util/CertUtil.kt index 749aedfdb..2bbf6685c 100644 --- a/app/src/main/java/com/aurora/store/util/CertUtil.kt +++ b/app/src/main/java/com/aurora/store/util/CertUtil.kt @@ -52,13 +52,12 @@ object CertUtil { "com.machiav3lli.fdroid" ) - fun isFDroidApp(context: Context, packageName: String): Boolean { - return isInstalledByFDroid(context, packageName) || isSignedByFDroid(context, packageName) - } + fun isFDroidApp(context: Context, packageName: String): Boolean = + isInstalledByFDroid(context, packageName) || isSignedByFDroid(context, packageName) - fun isAppGalleryApp(context: Context, packageName: String): Boolean { - return context.packageManager.getUpdateOwnerPackageNameCompat(packageName) == PACKAGE_NAME_APP_GALLERY - } + fun isAppGalleryApp(context: Context, packageName: String): Boolean = + context.packageManager.getUpdateOwnerPackageNameCompat(packageName) == + PACKAGE_NAME_APP_GALLERY fun isAuroraStoreApp(context: Context, packageName: String): Boolean { val installerPackageNames = AppInstaller.getAvailableInstallersInfo(context) @@ -68,35 +67,31 @@ object CertUtil { return installerPackageNames.contains(packageInstaller) } - fun getEncodedCertificateHashes(context: Context, packageName: String): List { - return try { - val certificates = getX509Certificates(context, packageName) - certificates.map { - val messageDigest = MessageDigest.getInstance(Algorithm.SHA.value) - messageDigest.update(it.encoded) - Base64.encodeToString( - messageDigest.digest(), - Base64.URL_SAFE or Base64.NO_PADDING or Base64.NO_WRAP - ) - } - } catch (exception: Exception) { - Log.e(TAG, "Failed to get SHA256 certificate hash", exception) - emptyList() + fun getEncodedCertificateHashes(context: Context, packageName: String): List = try { + val certificates = getX509Certificates(context, packageName) + certificates.map { + val messageDigest = MessageDigest.getInstance(Algorithm.SHA.value) + messageDigest.update(it.encoded) + Base64.encodeToString( + messageDigest.digest(), + Base64.URL_SAFE or Base64.NO_PADDING or Base64.NO_WRAP + ) } + } catch (exception: Exception) { + Log.e(TAG, "Failed to get SHA256 certificate hash", exception) + emptyList() } - private fun isSignedByFDroid(context: Context, packageName: String): Boolean { - return try { - getX509Certificates(context, packageName).any { cert -> - cert.subjectDN.name.split(",").associate { - val (left, right) = it.split("=") - left to right - }["O"] == "fdroid.org" - } - } catch (exception: Exception) { - Log.e(TAG, "Failed to check signing cert for $packageName") - false + private fun isSignedByFDroid(context: Context, packageName: String): Boolean = try { + getX509Certificates(context, packageName).any { cert -> + cert.subjectDN.name.split(",").associate { + val (left, right) = it.split("=") + left to right + }["O"] == "fdroid.org" } + } catch (exception: Exception) { + Log.e(TAG, "Failed to check signing cert for $packageName") + false } fun isMicroGGms(context: Context): Boolean { @@ -114,20 +109,23 @@ object CertUtil { } } - private fun isInstalledByFDroid(context: Context, packageName: String): Boolean { - return fdroidPackages.contains( + private fun isInstalledByFDroid(context: Context, packageName: String): Boolean = + fdroidPackages.contains( context.packageManager.getUpdateOwnerPackageNameCompat(packageName) ) - } - private fun getX509Certificates(context: Context, packageName: String): List { - return try { + private fun getX509Certificates(context: Context, packageName: String): List = + try { val packageInfo = getPackageInfoWithSignature(context, packageName) if (isPAndAbove) { if (packageInfo.signingInfo!!.hasMultipleSigners()) { - packageInfo.signingInfo!!.apkContentsSigners.map { it.generateX509Certificate() } + packageInfo.signingInfo!!.apkContentsSigners.map { + it.generateX509Certificate() + } } else { - packageInfo.signingInfo!!.signingCertificateHistory.map { it.generateX509Certificate() } + packageInfo.signingInfo!!.signingCertificateHistory.map { + it.generateX509Certificate() + } } } else { @Suppress("DEPRECATION") @@ -137,16 +135,14 @@ object CertUtil { Log.e(TAG, "Failed to get X509 certificates", exception) emptyList() } - } - private fun getPackageInfoWithSignature(context: Context, packageName: String): PackageInfo { - return if (isPAndAbove) { + private fun getPackageInfoWithSignature(context: Context, packageName: String): PackageInfo = + if (isPAndAbove) { getPackageInfo(context, packageName, PackageManager.GET_SIGNING_CERTIFICATES) } else { @Suppress("DEPRECATION") getPackageInfo(context, packageName, PackageManager.GET_SIGNATURES) } - } private fun extractSHA1Fingerprint(certificate: X509Certificate): String { val messageDigest = MessageDigest.getInstance(Algorithm.SHA1.value) @@ -156,10 +152,9 @@ object CertUtil { .lowercase() } - private fun parseX500Principal(principal: X500Principal): Map { - return principal.name.split(",").associate { + private fun parseX500Principal(principal: X500Principal): Map = + principal.name.split(",").associate { val (left, right) = it.split("=") left.trim() to right.trim() } - } } diff --git a/app/src/main/java/com/aurora/store/util/CommonUtil.kt b/app/src/main/java/com/aurora/store/util/CommonUtil.kt index 64e64d6cd..a65684460 100644 --- a/app/src/main/java/com/aurora/store/util/CommonUtil.kt +++ b/app/src/main/java/com/aurora/store/util/CommonUtil.kt @@ -48,8 +48,9 @@ object CommonUtil { ) fun addSiPrefix(value: Long): String { - if (value <= 1L) + if (value <= 1L) { return "NA" + } var tempValue = value var order = 0 while (tempValue >= 1000.0) { @@ -100,7 +101,8 @@ object CommonUtil { val exp = (ln(bytes.toDouble()) / ln(unit.toDouble())).toInt() val pre = (if (si) "kMGTPE" else "KMGTPE")[exp - 1].toString() + if (si) "" else "i" return String.format( - Locale.getDefault(), "%.1f %sB/s", + Locale.getDefault(), + "%.1f %sB/s", bytes / unit.toDouble().pow(exp.toDouble()), pre ) @@ -120,8 +122,8 @@ object CommonUtil { } fun parseProxyUrl(proxyUrl: String): ProxyInfo? { - val pattern = """^(https?|socks5?)://(?:([^\s:@]+):([^\s:@]+)@)?([^\s:@]+):(\d+)$""".toRegex() - val match = pattern.find(proxyUrl) + val pattern = """^(https?|socks5?)://(?:([^\s:@]+):([^\s:@]+)@)?([^\s:@]+):(\d+)$""" + val match = pattern.toRegex().find(proxyUrl) return when { match != null -> { diff --git a/app/src/main/java/com/aurora/store/util/NotificationUtil.kt b/app/src/main/java/com/aurora/store/util/NotificationUtil.kt index 0c014a03f..448bd86d1 100644 --- a/app/src/main/java/com/aurora/store/util/NotificationUtil.kt +++ b/app/src/main/java/com/aurora/store/util/NotificationUtil.kt @@ -24,10 +24,10 @@ import com.aurora.store.data.installer.AppInstaller import com.aurora.store.data.model.DownloadStatus import com.aurora.store.data.receiver.DownloadCancelReceiver import com.aurora.store.data.room.download.Download +import com.aurora.store.data.room.download.Download as AuroraDownload import com.aurora.store.data.room.update.Update import java.util.UUID import kotlin.math.absoluteValue -import com.aurora.store.data.room.download.Download as AuroraDownload object NotificationUtil { @@ -78,14 +78,13 @@ object NotificationUtil { } } - fun getDownloadNotification(context: Context): Notification { - return NotificationCompat.Builder(context, Constants.NOTIFICATION_CHANNEL_DOWNLOADS) + fun getDownloadNotification(context: Context): Notification = + NotificationCompat.Builder(context, Constants.NOTIFICATION_CHANNEL_DOWNLOADS) .setSmallIcon(android.R.drawable.stat_sys_download) .setContentTitle(context.getString(R.string.app_updater_service_notif_title)) .setContentText(context.getString(R.string.app_updater_service_notif_text)) .setOngoing(true) .build() - } fun getDownloadNotification( context: Context, @@ -186,37 +185,32 @@ object NotificationUtil { context: Context, displayName: String, packageName: String - ): Notification { - return NotificationCompat.Builder(context, Constants.NOTIFICATION_CHANNEL_INSTALL) - .setSmallIcon(R.drawable.ic_install) - .setLargeIcon(PackageUtil.getIconForPackage(context, packageName)) - .setContentTitle(displayName) - .setContentText(context.getString(R.string.installer_status_success)) - .setContentIntent(getContentIntentForDetails(context, packageName)) - .build() - } + ): Notification = NotificationCompat.Builder(context, Constants.NOTIFICATION_CHANNEL_INSTALL) + .setSmallIcon(R.drawable.ic_install) + .setLargeIcon(PackageUtil.getIconForPackage(context, packageName)) + .setContentTitle(displayName) + .setContentText(context.getString(R.string.installer_status_success)) + .setContentIntent(getContentIntentForDetails(context, packageName)) + .build() fun getInstallerStatusNotification( context: Context, packageName: String, displayName: String, content: String? - ): Notification { - return NotificationCompat.Builder(context, Constants.NOTIFICATION_CHANNEL_INSTALL) - .setSmallIcon(R.drawable.ic_install) - .setContentTitle(displayName) - .setContentText(content) - .setContentIntent(getContentIntentForDetails(context, packageName)) - .build() - } + ): Notification = NotificationCompat.Builder(context, Constants.NOTIFICATION_CHANNEL_INSTALL) + .setSmallIcon(R.drawable.ic_install) + .setContentTitle(displayName) + .setContentText(content) + .setContentIntent(getContentIntentForDetails(context, packageName)) + .build() - fun getUpdateNotification(context: Context): Notification { - return NotificationCompat.Builder(context, Constants.NOTIFICATION_CHANNEL_UPDATES) + fun getUpdateNotification(context: Context): Notification = + NotificationCompat.Builder(context, Constants.NOTIFICATION_CHANNEL_UPDATES) .setSmallIcon(R.drawable.ic_updates) .setContentTitle(context.getString(R.string.checking_updates)) .setOngoing(true) .build() - } fun getUpdateNotification(context: Context, updatesList: List): Notification { val contentIntent = NavDeepLinkBuilder(context) @@ -229,16 +223,17 @@ object NotificationUtil { return NotificationCompat.Builder(context, Constants.NOTIFICATION_CHANNEL_UPDATES) .setSmallIcon(R.drawable.ic_updates) .setContentTitle( - if (updatesList.size == 1) + if (updatesList.size == 1) { context.getString( R.string.notification_updates_available_1, updatesList.size ) - else + } else { context.getString( R.string.notification_updates_available, updatesList.size ) + } ) .setContentText( when (updatesList.size) { @@ -284,17 +279,16 @@ object NotificationUtil { .build() } - fun getExportNotification(context: Context): Notification { - return NotificationCompat.Builder(context, Constants.NOTIFICATION_CHANNEL_EXPORT) + fun getExportNotification(context: Context): Notification = + NotificationCompat.Builder(context, Constants.NOTIFICATION_CHANNEL_EXPORT) .setSmallIcon(R.drawable.ic_file_copy) .setContentTitle(context.getString(R.string.export_app_title)) .setContentText(context.getString(R.string.export_app_summary)) .setOngoing(true) .build() - } - fun getUnarchiveAuthNotification(context: Context, packageName: String): Notification { - return NotificationCompat.Builder(context, Constants.NOTIFICATION_CHANNEL_ACCOUNT) + fun getUnarchiveAuthNotification(context: Context, packageName: String): Notification = + NotificationCompat.Builder(context, Constants.NOTIFICATION_CHANNEL_ACCOUNT) .setSmallIcon(R.drawable.ic_account) .setContentTitle(context.getString(R.string.authentication_required_title)) .setContentText(context.getString(R.string.authentication_required_unarchive)) @@ -303,7 +297,6 @@ object NotificationUtil { .setCategory(NotificationCompat.CATEGORY_ERROR) .setPriority(NotificationCompat.PRIORITY_HIGH) .build() - } fun getExportStatusNotification( context: Context, @@ -362,23 +355,21 @@ object NotificationUtil { ) } - private fun getContentIntentForSplash(context: Context, packageName: String): PendingIntent { - return NavDeepLinkBuilder(context) + private fun getContentIntentForSplash(context: Context, packageName: String): PendingIntent = + NavDeepLinkBuilder(context) .setGraph(R.navigation.mobile_navigation) .setDestination(R.id.splashFragment) .setComponentName(MainActivity::class.java) .setArguments(bundleOf("packageName" to packageName)) .createPendingIntent() - } - private fun getContentIntentForDetails(context: Context, packageName: String): PendingIntent { - return NavDeepLinkBuilder(context) + private fun getContentIntentForDetails(context: Context, packageName: String): PendingIntent = + NavDeepLinkBuilder(context) .setGraph(R.navigation.mobile_navigation) .setDestination(R.id.splashFragment) .setComponentName(MainActivity::class.java) .setArguments(bundleOf("packageName" to packageName)) .createPendingIntent() - } private fun getInstallIntent(context: Context, download: Download): PendingIntent? { val intent = Intent(context, InstallActivity::class.java).apply { diff --git a/app/src/main/java/com/aurora/store/util/PackageUtil.kt b/app/src/main/java/com/aurora/store/util/PackageUtil.kt index 70370ff9c..8c0d52ea8 100644 --- a/app/src/main/java/com/aurora/store/util/PackageUtil.kt +++ b/app/src/main/java/com/aurora/store/util/PackageUtil.kt @@ -58,14 +58,13 @@ object PackageUtil { private const val VERSION_CODE_MICROG_COMPANION_MIN: Long = 84022620 private const val MICROG_INSTALL_ACTIVITY = "org.microg.vending.installer.AppInstallActivity" - fun getAllValidPackages(context: Context): List { - return context.packageManager.getInstalledPackages(PackageManager.GET_META_DATA) + fun getAllValidPackages(context: Context): List = + context.packageManager.getInstalledPackages(PackageManager.GET_META_DATA) .filter { it.isValidApp(context.packageManager) } .sortedBy { it.applicationInfo!!.loadLabel(context.packageManager).toString() .lowercase(Locale.getDefault()) } - } fun hasSupportedAppGallery(context: Context): Boolean { return try { @@ -85,10 +84,11 @@ object PackageUtil { ) @Suppress("DEPRECATION") - val versionCode = if (Build.VERSION.SDK_INT >= 28) + val versionCode = if (Build.VERSION.SDK_INT >= 28) { packageInfo.longVersionCode - else + } else { packageInfo.versionCode.toLong() + } Log.i(TAG, "AppGallery - ${packageInfo.versionName} ($versionCode)") @@ -119,20 +119,18 @@ object PackageUtil { return resolveInfo != null } - fun hasMicroGCompanion(context: Context): Boolean { - return isInstalled( - context, - PACKAGE_NAME_PLAY_STORE, - VERSION_CODE_MICROG_COMPANION_MIN - ) && hasActivity( - context, - PACKAGE_NAME_PLAY_STORE, - MICROG_INSTALL_ACTIVITY - ) - } + fun hasMicroGCompanion(context: Context): Boolean = isInstalled( + context, + PACKAGE_NAME_PLAY_STORE, + VERSION_CODE_MICROG_COMPANION_MIN + ) && hasActivity( + context, + PACKAGE_NAME_PLAY_STORE, + MICROG_INSTALL_ACTIVITY + ) - fun isInstalled(context: Context, packageName: String, versionCode: Long? = null): Boolean { - return try { + fun isInstalled(context: Context, packageName: String, versionCode: Long? = null): Boolean = + try { val packageInfo = getPackageInfo(context, packageName, PackageManager.GET_META_DATA) if (versionCode != null) { PackageInfoCompat.getLongVersionCode(packageInfo) >= versionCode @@ -142,44 +140,37 @@ object PackageUtil { } catch (_: PackageManager.NameNotFoundException) { false } + + fun isArchived(context: Context, packageName: String): Boolean = try { + isVAndAbove && context.packageManager.getArchivedPackage(packageName) != null + } catch (e: Exception) { + false } - fun isArchived(context: Context, packageName: String): Boolean { - return try { - isVAndAbove && context.packageManager.getArchivedPackage(packageName) != null - } catch (e: Exception) { - false - } - } - - fun isSharedLibrary(context: Context, packageName: String): Boolean { - return if (isOAndAbove) { - getAllSharedLibraries(context).any { it.name == packageName } - } else { - false - } + fun isSharedLibrary(context: Context, packageName: String): Boolean = if (isOAndAbove) { + getAllSharedLibraries(context).any { it.name == packageName } + } else { + false } fun isSharedLibraryInstalled( context: Context, packageName: String, versionCode: Long - ): Boolean { - return if (isOAndAbove) { - val sharedLibraries = getAllSharedLibraries(context) - if (isPAndAbove) { - sharedLibraries.any { - it.name == packageName && it.longVersion == versionCode - } - } else { - sharedLibraries.any { - @Suppress("DEPRECATION") - it.name == packageName && it.version == versionCode.toInt() - } + ): Boolean = if (isOAndAbove) { + val sharedLibraries = getAllSharedLibraries(context) + if (isPAndAbove) { + sharedLibraries.any { + it.name == packageName && it.longVersion == versionCode } } else { - false + sharedLibraries.any { + @Suppress("DEPRECATION") + it.name == packageName && it.version == versionCode.toInt() + } } + } else { + false } fun isUpdatable(context: Context, packageName: String, versionCode: Long): Boolean { @@ -191,48 +182,45 @@ object PackageUtil { } } - fun isMicroGBundleInstalled(context: Context): Boolean { - /** - * Confirm if MicroG bundle is installed - * Considering the following: - * 1. GmsCore is installed and it is a microG huawei variant - * 2. Play Store is installed - (microG Companion) - */ - return hasSupportedMicroGVariant(context) && isInstalled(context, PACKAGE_NAME_PLAY_STORE) + /** + * Confirm if MicroG bundle is installed + * Considering the following: + * 1. GmsCore is installed and it is a microG huawei variant + * 2. Play Store is installed - (microG Companion) + */ + fun isMicroGBundleInstalled(context: Context): Boolean = + hasSupportedMicroGVariant(context) && isInstalled(context, PACKAGE_NAME_PLAY_STORE) + + fun getInstalledVersionName(context: Context, packageName: String): String = try { + getPackageInfo(context, packageName).versionName ?: "" + } catch (e: PackageManager.NameNotFoundException) { + "" } - fun getInstalledVersionName(context: Context, packageName: String): String { - return try { - getPackageInfo(context, packageName).versionName ?: "" - } catch (e: PackageManager.NameNotFoundException) { - "" - } + fun getInstalledVersionCode(context: Context, packageName: String): Long = try { + PackageInfoCompat.getLongVersionCode(getPackageInfo(context, packageName)) + } catch (e: PackageManager.NameNotFoundException) { + 0 } - fun getInstalledVersionCode(context: Context, packageName: String): Long { - return try { - PackageInfoCompat.getLongVersionCode(getPackageInfo(context, packageName)) - } catch (e: PackageManager.NameNotFoundException) { - 0 - } - } - - fun isTv(context: Context): Boolean { - return context.packageManager.hasSystemFeature(PackageManager.FEATURE_LEANBACK) - } + fun isTv(context: Context): Boolean = + context.packageManager.hasSystemFeature(PackageManager.FEATURE_LEANBACK) fun getLaunchIntent(context: Context, packageName: String?): Intent? { val intent = if (isTv(context)) { context.packageManager.getLeanbackLaunchIntentForPackage(packageName!!) } else { context.packageManager.getLaunchIntentForPackage(packageName!!) - } + } ?: return null - return if (intent == null) { - null - } else { - intent.addCategory(if (isTv(context)) Intent.CATEGORY_LEANBACK_LAUNCHER else Intent.CATEGORY_LAUNCHER) - intent + return intent.apply { + addCategory( + if (isTv(context)) { + Intent.CATEGORY_LEANBACK_LAUNCHER + } else { + Intent.CATEGORY_LAUNCHER + } + ) } } @@ -257,15 +245,13 @@ object PackageUtil { } } - fun getInstallUnknownAppsIntent(): Intent { - return if (isOAndAbove) { - Intent( - Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, - "package:${BuildConfig.APPLICATION_ID}".toUri() - ) - } else { - Intent(Settings.ACTION_SECURITY_SETTINGS) - } + fun getInstallUnknownAppsIntent(): Intent = if (isOAndAbove) { + Intent( + Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, + "package:${BuildConfig.APPLICATION_ID}".toUri() + ) + } else { + Intent(Settings.ACTION_SECURITY_SETTINGS) } fun canRequestPackageInstalls(context: Context): Boolean { @@ -275,7 +261,8 @@ object PackageUtil { @Suppress("DEPRECATION") val secureResult = Settings.Secure.getInt( context.contentResolver, - Settings.Secure.INSTALL_NON_MARKET_APPS, 0 + Settings.Secure.INSTALL_NON_MARKET_APPS, + 0 ) return secureResult == 1 @@ -283,8 +270,8 @@ object PackageUtil { } @Throws(Exception::class) - fun getPackageInfo(context: Context, packageName: String, flags: Int = 0): PackageInfo { - return if (isTAndAbove) { + fun getPackageInfo(context: Context, packageName: String, flags: Int = 0): PackageInfo = + if (isTAndAbove) { context.packageManager.getPackageInfo( packageName, PackageInfoFlags.of(flags.toLong()) @@ -292,21 +279,18 @@ object PackageUtil { } else { context.packageManager.getPackageInfo(packageName, flags) } - } - fun getIconForPackage(context: Context, packageName: String): Bitmap? { - return try { - val packageInfo = context.packageManager.getPackageInfo(packageName, 0) - val icon = packageInfo.applicationInfo!!.loadIcon(context.packageManager) - if (icon.intrinsicWidth > 0 && icon.intrinsicHeight > 0) { - icon.toBitmap(96, 96) - } else { - context.packageManager.defaultActivityIcon.toBitmap(96, 96) - } - } catch (exception: Exception) { - Log.e(TAG, "Failed to get icon for package!", exception) - null + fun getIconForPackage(context: Context, packageName: String): Bitmap? = try { + val packageInfo = context.packageManager.getPackageInfo(packageName, 0) + val icon = packageInfo.applicationInfo!!.loadIcon(context.packageManager) + if (icon.intrinsicWidth > 0 && icon.intrinsicHeight > 0) { + icon.toBitmap(96, 96) + } else { + context.packageManager.defaultActivityIcon.toBitmap(96, 96) } + } catch (exception: Exception) { + Log.e(TAG, "Failed to get icon for package!", exception) + null } fun getIconDrawableForPackage(context: Context, packageName: String): Drawable? { @@ -323,15 +307,14 @@ object PackageUtil { } } - private fun getAllSharedLibraries(context: Context, flags: Int = 0): List { - return if (isTAndAbove) { + private fun getAllSharedLibraries(context: Context, flags: Int = 0): List = + if (isTAndAbove) { context.packageManager.getSharedLibraries(PackageInfoFlags.of(flags.toLong())) } else if (isOAndAbove) { context.packageManager.getSharedLibraries(flags) } else { emptyList() } - } fun getFilter(): IntentFilter { val filter = IntentFilter() diff --git a/app/src/main/java/com/aurora/store/util/PathUtil.kt b/app/src/main/java/com/aurora/store/util/PathUtil.kt index 6fd369e6f..fe7108cc7 100644 --- a/app/src/main/java/com/aurora/store/util/PathUtil.kt +++ b/app/src/main/java/com/aurora/store/util/PathUtil.kt @@ -32,36 +32,28 @@ object PathUtil { private const val DOWNLOADS = "Downloads" private const val SPOOF = "SpoofConfigs" - fun getOldDownloadDirectories(context: Context): List { - return listOf( - File(context.filesDir, DOWNLOADS), // till 4.4.2 - File(context.getExternalFilesDir(null), DOWNLOADS) // till 4.4.2 - ) - } + fun getOldDownloadDirectories(context: Context): List = listOf( + File(context.filesDir, DOWNLOADS), // till 4.4.2 + File(context.getExternalFilesDir(null), DOWNLOADS) // till 4.4.2 + ) - fun getDownloadDirectory(context: Context): File { - return File(context.cacheDir, DOWNLOADS) - } + fun getDownloadDirectory(context: Context): File = File(context.cacheDir, DOWNLOADS) - private fun getPackageDirectory(context: Context, packageName: String): File { - return File(getDownloadDirectory(context), packageName) - } + private fun getPackageDirectory(context: Context, packageName: String): File = + File(getDownloadDirectory(context), packageName) - fun getAppDownloadDir(context: Context, packageName: String, versionCode: Long): File { - return File(getPackageDirectory(context, packageName), versionCode.toString()) - } + fun getAppDownloadDir(context: Context, packageName: String, versionCode: Long): File = + File(getPackageDirectory(context, packageName), versionCode.toString()) fun getLibDownloadDir( context: Context, packageName: String, versionCode: Long, sharedLibPackageName: String - ): File { - return File( - getAppDownloadDir(context, packageName, versionCode), - "$LIBRARIES/$sharedLibPackageName" - ) - } + ): File = File( + getAppDownloadDir(context, packageName, versionCode), + "$LIBRARIES/$sharedLibPackageName" + ) /** * Returns an instance of java's [File] class for the given [PlayFile] @@ -92,23 +84,19 @@ object PathUtil { } } - fun getZipFile(context: Context, packageName: String, versionCode: Long): File { - return File( - getAppDownloadDir( - context, - packageName, - versionCode, - ), "${packageName}_${versionCode}.apks" - ) - } + fun getZipFile(context: Context, packageName: String, versionCode: Long): File = File( + getAppDownloadDir( + context, + packageName, + versionCode + ), + "${packageName}_$versionCode.apks" + ) - fun getObbDownloadDir(packageName: String): File { - return File(Environment.getExternalStorageDirectory(), "/Android/obb/$packageName") - } + fun getObbDownloadDir(packageName: String): File = + File(Environment.getExternalStorageDirectory(), "/Android/obb/$packageName") - fun getSpoofDirectory(context: Context): File { - return File(context.filesDir, SPOOF) - } + fun getSpoofDirectory(context: Context): File = File(context.filesDir, SPOOF) fun getNewEmptySpoofConfig(context: Context): File { val file = File(getSpoofDirectory(context), "${UUID.randomUUID()}.properties") @@ -117,4 +105,3 @@ object PathUtil { return file } } - diff --git a/app/src/main/java/com/aurora/store/util/Preferences.kt b/app/src/main/java/com/aurora/store/util/Preferences.kt index 6cf12dda3..38bf4f06d 100644 --- a/app/src/main/java/com/aurora/store/util/Preferences.kt +++ b/app/src/main/java/com/aurora/store/util/Preferences.kt @@ -64,17 +64,15 @@ object Preferences { private var prefs: SharedPreferences? = null - fun getPrefs(context: Context): SharedPreferences { - return when (BuildConfig.FLAVOR) { - "vanilla" -> { - prefs ?: PreferenceManager.getDefaultSharedPreferences(context).also { prefs = it } - } + fun getPrefs(context: Context): SharedPreferences = when (BuildConfig.FLAVOR) { + "vanilla" -> { + prefs ?: PreferenceManager.getDefaultSharedPreferences(context).also { prefs = it } + } - else -> { - val prefName = "${context.packageName}_${BuildConfig.FLAVOR}_preferences" - prefs ?: context.getSharedPreferences(prefName, Context.MODE_PRIVATE) - .also { prefs = it } - } + else -> { + val prefName = "${context.packageName}_${BuildConfig.FLAVOR}_preferences" + prefs ?: context.getSharedPreferences(prefName, Context.MODE_PRIVATE) + .also { prefs = it } } } @@ -110,33 +108,24 @@ object Preferences { getPrefs(context).edit(true) { putBoolean(key, value) } } - fun getString(context: Context, key: String, default: String = ""): String { - return getPrefs(context).getString(key, default).toString() - } + fun getString(context: Context, key: String, default: String = ""): String = + getPrefs(context).getString(key, default).toString() fun getStringSet( context: Context, key: String, default: Set = emptySet() - ): Set { - return getPrefs(context).getStringSet(key, default) ?: emptySet() - } + ): Set = getPrefs(context).getStringSet(key, default) ?: emptySet() - fun getInteger(context: Context, key: String, default: Int = 0): Int { - return getPrefs(context).getInt(key, default) - } + fun getInteger(context: Context, key: String, default: Int = 0): Int = + getPrefs(context).getInt(key, default) - fun getFloat(context: Context, key: String): Float { - return getPrefs(context).getFloat(key, 0.0f) - } + fun getFloat(context: Context, key: String): Float = getPrefs(context).getFloat(key, 0.0f) - fun getLong(context: Context, key: String): Long { - return getPrefs(context).getLong(key, 0L) - } + fun getLong(context: Context, key: String): Long = getPrefs(context).getLong(key, 0L) - fun getBoolean(context: Context, key: String, default: Boolean = false): Boolean { - return getPrefs(context).getBoolean(key, default) - } + fun getBoolean(context: Context, key: String, default: Boolean = false): Boolean = + getPrefs(context).getBoolean(key, default) } /*Preference Extensions*/ @@ -151,7 +140,6 @@ fun Context.save(key: String, value: Set) = Preferences.putStringSet(thi fun Context.remove(key: String) = Preferences.remove(this, key) - fun Fragment.save(key: String, value: Int) = requireContext().save(key, value) fun Fragment.save(key: String, value: Boolean) = requireContext().save(key, value) diff --git a/app/src/main/java/com/aurora/store/util/ShortcutManagerUtil.kt b/app/src/main/java/com/aurora/store/util/ShortcutManagerUtil.kt index b23f8f187..660277f6b 100644 --- a/app/src/main/java/com/aurora/store/util/ShortcutManagerUtil.kt +++ b/app/src/main/java/com/aurora/store/util/ShortcutManagerUtil.kt @@ -11,10 +11,9 @@ object ShortcutManagerUtil { private const val TAG = "ShortcutManagerUtil" - fun canPinShortcut(context: Context, packageName: String): Boolean { - return ShortcutManagerCompat.isRequestPinShortcutSupported(context) && - context.packageManager.getLaunchIntentForPackage(packageName) != null - } + fun canPinShortcut(context: Context, packageName: String): Boolean = + ShortcutManagerCompat.isRequestPinShortcutSupported(context) && + context.packageManager.getLaunchIntentForPackage(packageName) != null fun requestPinShortcut(context: Context, packageName: String) { val packageManager = context.packageManager