diff --git a/app/build.gradle b/app/build.gradle index a4a687d255..860af252d4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,8 +20,8 @@ android { applicationId "com.vanced.manager" minSdkVersion 21 targetSdkVersion 30 - versionCode 13 - versionName "1.3.0b (Arcturus)" + versionCode 131 + versionName "1.3.1 (Arcturus)" vectorDrawables.useSupportLibrary = true @@ -88,11 +88,9 @@ def getLanguageNames() { for (int i = 0; i < langs.size(); i++) { if (langs[i].length() > 2) { Locale loc = new Locale(langs[i].substring(0, langs[i].length() - 3), langs[i].substring(langs[i].length() - 2)) - project.logger.lifecycle(loc.getDisplayLanguage(loc).capitalize() + " (" + loc.getDisplayCountry(loc).capitalize() + ")") langnames.add(loc.getDisplayLanguage(loc).capitalize() + " (" + loc.getDisplayCountry(loc).capitalize() + ")") } else { Locale loc = new Locale(langs[i]) - project.logger.lifecycle(loc.getDisplayLanguage(loc).capitalize()) langnames.add(loc.getDisplayLanguage(loc).capitalize()) } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b9fbff4c5c..4f38c80b38 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,6 +8,7 @@ + @@ -45,6 +46,7 @@ android:name=".ui.MainActivity" android:label="@string/app_name" android:theme="@style/DarkTheme.Blue" + android:configChanges="layoutDirection|locale" android:exported="true"/> () { diff --git a/app/src/main/java/com/vanced/manager/core/App.kt b/app/src/main/java/com/vanced/manager/core/App.kt index d4b8ab3b42..79b6b04c41 100644 --- a/app/src/main/java/com/vanced/manager/core/App.kt +++ b/app/src/main/java/com/vanced/manager/core/App.kt @@ -2,6 +2,7 @@ package com.vanced.manager.core import android.app.Application import android.content.res.Configuration +import androidx.databinding.ObservableField import androidx.preference.PreferenceManager.getDefaultSharedPreferences import com.beust.klaxon.JsonObject import com.crowdin.platform.Crowdin @@ -10,14 +11,14 @@ import com.crowdin.platform.data.remote.NetworkType import com.downloader.PRDownloader import com.vanced.manager.utils.InternetTools.baseUrl import com.vanced.manager.utils.JsonHelper.getJson -import kotlinx.coroutines.* +import kotlinx.coroutines.runBlocking open class App: Application() { - var vanced: JsonObject? = null - var music: JsonObject? = null - var microg: JsonObject? = null - var manager: JsonObject? = null + var vanced = ObservableField() + var music = ObservableField() + var microg = ObservableField() + var manager = ObservableField() override fun onCreate() { loadJsonAsync() @@ -33,12 +34,13 @@ open class App: Application() { } - fun loadJsonAsync() { - val latest = runBlocking { getJson("${getDefaultSharedPreferences(this@App).getString("update_url", baseUrl)}/latest.json") } - vanced = latest.obj("vanced") - music = latest.obj("music") - microg = latest.obj("microg") - manager = latest.obj("manager") + open fun loadJsonAsync() { + val latest = runBlocking { getJson("${getDefaultSharedPreferences(this@App).getString("install_url", baseUrl)}/latest.json") } + + vanced.set(latest?.obj("vanced")) + music.set(latest?.obj("music")) + microg.set(latest?.obj("microg")) + manager.set(latest?.obj("manager")) } override fun onConfigurationChanged(newConfig: Configuration) { @@ -46,4 +48,5 @@ open class App: Application() { Crowdin.onConfigurationChanged() } + } diff --git a/app/src/main/java/com/vanced/manager/core/downloader/MicrogDownloader.kt b/app/src/main/java/com/vanced/manager/core/downloader/MicrogDownloader.kt index b48b1c50be..044c2dc3a3 100644 --- a/app/src/main/java/com/vanced/manager/core/downloader/MicrogDownloader.kt +++ b/app/src/main/java/com/vanced/manager/core/downloader/MicrogDownloader.kt @@ -6,10 +6,10 @@ import com.downloader.Error import com.downloader.OnDownloadListener import com.downloader.PRDownloader import com.vanced.manager.R +import com.vanced.manager.core.App import com.vanced.manager.ui.viewmodels.HomeViewModel.Companion.microgProgress import com.vanced.manager.utils.AppUtils.mutableInstall import com.vanced.manager.utils.InternetTools.getFileNameFromUrl -import com.vanced.manager.utils.InternetTools.getJsonString import com.vanced.manager.utils.PackageHelper.install import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -17,18 +17,15 @@ import kotlinx.coroutines.launch object MicrogDownloader { - //private var downloadId: Long = 0 - fun downloadMicrog(context: Context) { CoroutineScope(Dispatchers.IO).launch { - val url = getJsonString("microg.json", "url", context) - //downloadId = download(url, "apk", "microg.apk", this@MicrogDownloadService) + val url = (context.applicationContext as App).microg.get()?.string("url") microgProgress.get()?.currentDownload = PRDownloader.download(url, context.getExternalFilesDir("apk")?.path, "microg.apk") .build() .setOnStartOrResumeListener { mutableInstall.value = true - microgProgress.get()?.downloadingFile?.set(context.getString(R.string.downloading_file, getFileNameFromUrl(url))) + microgProgress.get()?.downloadingFile?.set(context.getString(R.string.downloading_file, url?.let { getFileNameFromUrl(it) })) microgProgress.get()?.showDownloadBar?.set(true) } .setOnCancelListener { @@ -55,19 +52,4 @@ object MicrogDownloader { } } - /* - private val receiver = object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - if (intent?.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1) == downloadId) { - //prefs?.edit()?.putBoolean("isMicrogDownloading", false)?.apply() - //cancelNotif(channel, this@MicrogDownloadService) - val bIntent = Intent(this@MicrogDownloadService, AppInstaller::class.java) - bIntent.putExtra("path", "${getExternalFilesDir("apk")}/microg.apk") - bIntent.putExtra("pkg", "com.mgoogle.android.gms") - startService(bIntent) - } - } - } - */ - } diff --git a/app/src/main/java/com/vanced/manager/core/downloader/MusicDownloader.kt b/app/src/main/java/com/vanced/manager/core/downloader/MusicDownloader.kt index 6917cafd32..ee5073771d 100644 --- a/app/src/main/java/com/vanced/manager/core/downloader/MusicDownloader.kt +++ b/app/src/main/java/com/vanced/manager/core/downloader/MusicDownloader.kt @@ -6,10 +6,10 @@ import com.downloader.Error import com.downloader.OnDownloadListener import com.downloader.PRDownloader import com.vanced.manager.R +import com.vanced.manager.core.App import com.vanced.manager.ui.viewmodels.HomeViewModel.Companion.musicProgress import com.vanced.manager.utils.AppUtils.mutableInstall import com.vanced.manager.utils.InternetTools.getFileNameFromUrl -import com.vanced.manager.utils.InternetTools.getJsonString import com.vanced.manager.utils.PackageHelper.install import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -17,14 +17,9 @@ import kotlinx.coroutines.launch object MusicDownloader { - //private var downloadId: Long = 0 - fun downloadMusic(context: Context){ CoroutineScope(Dispatchers.IO).launch { - val version = getJsonString("music.json", "version", context) - val url = "https://vanced.app/api/v1/music/v$version.apk" - - //downloadId = download(url, "apk", "music.apk", this@MusicDownloadService) + val url = "https://vanced.app/api/v1/music/v${(context.applicationContext as App).music.get()?.string("version")}.apk" musicProgress.get()?.currentDownload = PRDownloader.download(url, context.getExternalFilesDir("apk")?.path, "music.apk") .build() @@ -58,19 +53,4 @@ object MusicDownloader { } - /* - private val receiver = object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - if (intent?.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1) == downloadId) { - //prefs?.edit()?.putBoolean("isMusicDownloading", false)?.apply() - //cancelNotif(channel, this@MusicDownloadService) - val bIntent = Intent(this@MusicDownloadService, AppInstaller::class.java) - bIntent.putExtra("path", "${getExternalFilesDir("apk")}/music.apk") - bIntent.putExtra("pkg", "com.mgoogle.android.gms") - startService(bIntent) - } - } - } - */ - } diff --git a/app/src/main/java/com/vanced/manager/core/downloader/VancedDownloader.kt b/app/src/main/java/com/vanced/manager/core/downloader/VancedDownloader.kt index 2a1a8761d1..d8c46a97ed 100644 --- a/app/src/main/java/com/vanced/manager/core/downloader/VancedDownloader.kt +++ b/app/src/main/java/com/vanced/manager/core/downloader/VancedDownloader.kt @@ -14,10 +14,10 @@ import com.vanced.manager.R import com.vanced.manager.core.App import com.vanced.manager.ui.viewmodels.HomeViewModel.Companion.vancedProgress import com.vanced.manager.utils.AppUtils.mutableInstall +import com.vanced.manager.utils.AppUtils.vancedRootPkg import com.vanced.manager.utils.InternetTools import com.vanced.manager.utils.InternetTools.baseUrl import com.vanced.manager.utils.InternetTools.getFileNameFromUrl -import com.vanced.manager.utils.InternetTools.getObjectFromJson import com.vanced.manager.utils.PackageHelper.getPkgVerCode import com.vanced.manager.utils.PackageHelper.installVanced import com.vanced.manager.utils.PackageHelper.installVancedRoot @@ -28,6 +28,7 @@ import kotlinx.coroutines.runBlocking import java.io.File import java.io.IOException import java.security.MessageDigest +import java.util.* object VancedDownloader { @@ -42,18 +43,15 @@ object VancedDownloader { private var lang: Array? = null private lateinit var themePath: String - - //private var downloadId: Long = 0 - //private var apkType: String = "arch" + private var count: Int = 0 private var hashUrl = "" - private const val yPkg = "com.google.android.youtube" private var vancedVersionCode = 0 - private val vancedVersion by lazy { runBlocking { getObjectFromJson("$installUrl/vanced.json", "version") }} + private var vancedVersion: String? = null fun downloadVanced(context: Context){ - //registerReceiver(receiver, IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)) + val app = context.applicationContext as App File(context.getExternalFilesDir("apks")?.path as String).deleteRecursively() defPrefs = getDefaultSharedPreferences(context) installUrl = defPrefs.getString("install_url", baseUrl) @@ -61,6 +59,7 @@ object VancedDownloader { variant = defPrefs.getString("vanced_variant", "nonroot") lang = prefs.getString("lang", "en")?.split(", ")?.toTypedArray() theme = prefs.getString("theme", "dark") + vancedVersion = app.vanced.get()?.string("version") themePath = "$installUrl/apks/v$vancedVersion/$variant/Theme" hashUrl = "apks/v$vancedVersion/$variant/Theme/hash.json" //newInstaller = defPrefs.getBoolean("new_installer", false) @@ -70,8 +69,8 @@ object VancedDownloader { Build.SUPPORTED_ABIS.contains("arm64-v8a") -> "arm64_v8a" else -> "armeabi_v7a" } - val app = context.applicationContext as App - vancedVersionCode = app.vanced?.int("versionCode") ?: 0 + + vancedVersionCode = app.vanced.get()?.int("versionCode") ?: 0 downloadSplits(context) } @@ -90,11 +89,7 @@ object VancedDownloader { else -> throw NotImplementedError("This type of APK is NOT valid. What the hell did you even do?") } - //apkType = type - //downloadId = download(url, "apks", getFileNameFromUrl(url), this@VancedDownloadService) - - vancedProgress.get()?.currentDownload = PRDownloader - .download(url, context.getExternalFilesDir("apks")?.path, getFileNameFromUrl(url)) + vancedProgress.get()?.currentDownload = PRDownloader.download(url, context.getExternalFilesDir("apks")?.path, getFileNameFromUrl(url)) .build() .setOnStartOrResumeListener { mutableInstall.value = true @@ -114,7 +109,7 @@ object VancedDownloader { "theme" -> if (variant == "root") { if (validateTheme(context)) { - if(downloadStockCheck(context)) + if (downloadStockCheck(context)) downloadSplits(context, "arch") else prepareInstall(variant!!, context) @@ -143,6 +138,7 @@ object VancedDownloader { else prepareInstall(variant!!, context) } else { + count = 0 mutableInstall.value = false vancedProgress.get()?.showDownloadBar?.set(false) Toast.makeText(context, context.getString(R.string.error_downloading, getFileNameFromUrl(url)), Toast.LENGTH_SHORT).show() @@ -154,7 +150,7 @@ object VancedDownloader { private fun downloadStockCheck(context: Context) :Boolean { return try { - getPkgVerCode(yPkg,context.packageManager) != vancedVersionCode + getPkgVerCode(vancedRootPkg, context.packageManager) != vancedVersionCode } catch (e: Exception) { true } @@ -171,40 +167,13 @@ object VancedDownloader { return checkSHA256(sha256Val!!,themeF) } - /* - private val receiver = object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val prefs = context?.getSharedPreferences("installPrefs", Context.MODE_PRIVATE) - val variant = PreferenceManager.getDefaultSharedPreferences(this@VancedDownloadService).getString("vanced_variant", "nonroot") - val lang = prefs?.getString("lang", "en") - if (intent?.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1) == downloadId) { - when (apkType) { - "arch" -> downloadSplits(context, "theme") - "theme" -> downloadSplits(context, "lang") - "lang" -> { - if (lang == "en") { - prepareInstall(variant!!) - //cancelNotif(channel, this@VancedDownloadService) - } else { - downloadSplits(context, "enlang") - } - } - "enlang" -> { - prepareInstall(variant!!) - //cancelNotif(channel, this@VancedDownloadService) - } - } - } - } - } - */ - private fun prepareInstall(variant: String, context: Context) { + count = 0 vancedProgress.get()?.showDownloadBar?.set(false) vancedProgress.get()?.showInstallCircle?.set(true) FirebaseAnalytics.getInstance(context).logEvent(FirebaseAnalytics.Event.SELECT_ITEM) { - param("Vanced Variant", variant) - theme?.let { param("Vanced Theme", it) } + param("vanced_variant", variant) + theme?.let { param("vanced_theme", it) } } if (variant == "root") installVancedRoot(context) @@ -218,7 +187,7 @@ object VancedDownloader { // Generate the checksum val sum = generateChecksum(dataBuffer) - sum == sha256 + sum.toLowerCase(Locale.ENGLISH) == sha256.toLowerCase(Locale.ENGLISH) } catch (e: Exception) { e.printStackTrace() false diff --git a/app/src/main/java/com/vanced/manager/core/firebase/CloudMessaging.kt b/app/src/main/java/com/vanced/manager/core/firebase/CloudMessaging.kt index 9b52333d71..15625f1491 100644 --- a/app/src/main/java/com/vanced/manager/core/firebase/CloudMessaging.kt +++ b/app/src/main/java/com/vanced/manager/core/firebase/CloudMessaging.kt @@ -3,7 +3,7 @@ package com.vanced.manager.core.firebase import android.util.Log import com.google.firebase.messaging.FirebaseMessagingService -class CloudMessaging: FirebaseMessagingService() { +class CloudMessaging : FirebaseMessagingService() { override fun onNewToken(p0: String) { super.onNewToken(p0) diff --git a/app/src/main/java/com/vanced/manager/model/DataModel.kt b/app/src/main/java/com/vanced/manager/model/DataModel.kt index 79fc50c2a7..c6d3370d3d 100644 --- a/app/src/main/java/com/vanced/manager/model/DataModel.kt +++ b/app/src/main/java/com/vanced/manager/model/DataModel.kt @@ -15,18 +15,10 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch open class DataModel( - private val jsonObject: JsonObject?, - app: String, + private val jsonObject: ObservableField, + private val appPkg: String, private val context: Context ) { - - private val appPkg = - when (app) { - "vanced" -> "com.vanced.android.youtube" - "vancedRoot" -> "com.google.android.youtube" - "microg" -> "com.mgoogle.android.gms" - else -> "com.vanced.android.apps.youtube.music" - } private val versionCode = ObservableInt() private val installedVersionCode = ObservableInt() @@ -40,13 +32,13 @@ open class DataModel( fun fetch() = CoroutineScope(Dispatchers.IO).launch { isAppInstalled.set(isPackageInstalled(appPkg, context.packageManager)) - versionName.set(jsonObject?.string("version")?.removeSuffix("-vanced") ?: context.getString(R.string.unavailable)) + versionName.set(jsonObject.get()?.string("version")?.removeSuffix("-vanced") ?: context.getString(R.string.unavailable)) installedVersionName.set(getPkgVersionName(isAppInstalled.get(), appPkg)) - versionCode.set(jsonObject?.int("versionCode") ?: 0) + versionCode.set(jsonObject.get()?.int("versionCode") ?: 0) installedVersionCode.set(getPkgVersionCode(isAppInstalled.get(), appPkg)) buttonTxt.set(compareInt(installedVersionCode.get(), versionCode.get())) buttonIcon.set(compareIntDrawable(installedVersionCode.get(), versionCode.get())) - changelog.set(jsonObject?.string("changelog") ?: context.getString(R.string.unavailable)) + changelog.set(jsonObject.get()?.string("changelog") ?: context.getString(R.string.unavailable)) } init { @@ -54,8 +46,9 @@ open class DataModel( } private fun getPkgVersionName(toCheck: Boolean, pkg: String): String { + val pm = context.packageManager return if (toCheck) { - context.packageManager.getPackageInfo(pkg, 0).versionName.removeSuffix("-vanced") + pm.getPackageInfo(pkg, 0).versionName.removeSuffix("-vanced") } else { context.getString(R.string.unavailable) } diff --git a/app/src/main/java/com/vanced/manager/ui/MainActivity.kt b/app/src/main/java/com/vanced/manager/ui/MainActivity.kt index 5381509abd..c57b01c1d9 100644 --- a/app/src/main/java/com/vanced/manager/ui/MainActivity.kt +++ b/app/src/main/java/com/vanced/manager/ui/MainActivity.kt @@ -2,6 +2,7 @@ package com.vanced.manager.ui import android.content.Context import android.content.Intent +import android.content.res.Configuration import android.os.Bundle import android.util.Log import android.view.MenuItem @@ -27,9 +28,6 @@ import com.vanced.manager.utils.InternetTools import com.vanced.manager.utils.LanguageContextWrapper import com.vanced.manager.utils.PackageHelper import com.vanced.manager.utils.ThemeHelper.setFinalTheme -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch class MainActivity : AppCompatActivity() { @@ -117,6 +115,17 @@ class MainActivity : AppCompatActivity() { super.attachBaseContext(LanguageContextWrapper.wrap(newBase)) } + override fun onConfigurationChanged(newConfig: Configuration) { + super.onConfigurationChanged(newConfig) + recreate() //restarting activity to recreate viewmodels, otherwise some text won't update + } + + override fun recreate() { + //needed for setting language smh + startActivity(Intent(this, this::class.java)) + finish() + } + private fun initDialogs() { val prefs = getDefaultSharedPreferences(this) val variant = prefs.getString("vanced_variant", "nonroot") @@ -148,10 +157,8 @@ class MainActivity : AppCompatActivity() { } private fun checkUpdates() { - CoroutineScope(Dispatchers.Main).launch { - if (InternetTools.isUpdateAvailable()) { - UpdateCheckFragment().show(supportFragmentManager, "UpdateCheck") - } + if (InternetTools.isUpdateAvailable(this)) { + UpdateCheckFragment().show(supportFragmentManager, "UpdateCheck") } } diff --git a/app/src/main/java/com/vanced/manager/ui/dialogs/DialogContainer.kt b/app/src/main/java/com/vanced/manager/ui/dialogs/DialogContainer.kt index 8496b48411..a1fc44bb46 100644 --- a/app/src/main/java/com/vanced/manager/ui/dialogs/DialogContainer.kt +++ b/app/src/main/java/com/vanced/manager/ui/dialogs/DialogContainer.kt @@ -73,7 +73,6 @@ object DialogContainer { } } - //Easter Egg fun statementFalse(context: Context) { MaterialAlertDialogBuilder(context).apply { setTitle("Wait what?") diff --git a/app/src/main/java/com/vanced/manager/ui/fragments/DevSettingsFragment.kt b/app/src/main/java/com/vanced/manager/ui/fragments/DevSettingsFragment.kt index 89e0db4431..3d90d34fba 100644 --- a/app/src/main/java/com/vanced/manager/ui/fragments/DevSettingsFragment.kt +++ b/app/src/main/java/com/vanced/manager/ui/fragments/DevSettingsFragment.kt @@ -1,23 +1,15 @@ package com.vanced.manager.ui.fragments import android.content.Intent -import android.net.Uri import android.os.Build import android.os.Bundle -import android.util.Log -import android.widget.Toast import androidx.appcompat.app.AlertDialog -import androidx.core.content.FileProvider import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat import androidx.preference.PreferenceManager -import com.downloader.OnDownloadListener -import com.downloader.PRDownloader import com.vanced.manager.R import com.vanced.manager.ui.MainActivity -import kotlinx.coroutines.launch -import kotlinx.coroutines.runBlocking -import java.io.File +import com.vanced.manager.utils.DownloadHelper.downloadManager class DevSettingsFragment: PreferenceFragmentCompat() { @@ -45,6 +37,12 @@ class DevSettingsFragment: PreferenceFragmentCompat() { true } + + findPreference("install_url")?.setOnPreferenceClickListener { + URLChangeFragment().show(childFragmentManager.beginTransaction(), "Install URL") + true + } + val supportedAbis: Array = Build.SUPPORTED_ABIS findPreference("device_arch")?.summary = @@ -58,38 +56,7 @@ class DevSettingsFragment: PreferenceFragmentCompat() { val forceUpdate: Preference? = findPreference("force_update") forceUpdate?.setOnPreferenceClickListener { - runBlocking { - launch { - val url = "https://github.com/YTVanced/VancedManager/releases/latest/download/manager.apk" - //downloadId = activity?.let { download(url, "apk", "manager.apk", it) }!! - PRDownloader.download(url, activity?.getExternalFilesDir("apk")?.path, "manager.apk") - .build() - .start(object : OnDownloadListener { - override fun onDownloadComplete() { - activity?.let { - val apk = File("${activity?.getExternalFilesDir("apk")?.path}/manager.apk") - val uri = - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) - FileProvider.getUriForFile(activity!!, "${activity?.packageName}.provider", apk) - else - Uri.fromFile(apk) - - val intent = Intent(Intent.ACTION_VIEW) - intent.setDataAndType(uri, "application/vnd.android.package-archive") - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) - startActivity(intent) - } - } - - override fun onError(error: com.downloader.Error?) { - Toast.makeText(activity, error.toString(), Toast.LENGTH_SHORT).show() - Log.e("VMUpgrade", error.toString()) - } - - }) - } - } + downloadManager(true, requireActivity()) true } diff --git a/app/src/main/java/com/vanced/manager/ui/fragments/HomeFragment.kt b/app/src/main/java/com/vanced/manager/ui/fragments/HomeFragment.kt index 4d12156268..66f0ac11d2 100644 --- a/app/src/main/java/com/vanced/manager/ui/fragments/HomeFragment.kt +++ b/app/src/main/java/com/vanced/manager/ui/fragments/HomeFragment.kt @@ -22,12 +22,15 @@ import com.vanced.manager.adapter.VariantAdapter import com.vanced.manager.databinding.FragmentHomeBinding import com.vanced.manager.ui.dialogs.DialogContainer.installAlertBuilder import com.vanced.manager.ui.viewmodels.HomeViewModel -import com.vanced.manager.utils.AppUtils +import com.vanced.manager.ui.viewmodels.HomeViewModelFactory +import com.vanced.manager.utils.AppUtils.installing open class HomeFragment : Fragment() { private lateinit var binding: FragmentHomeBinding - private val viewModel: HomeViewModel by viewModels() + private val viewModel: HomeViewModel by viewModels { + HomeViewModelFactory(requireActivity()) + } private val localBroadcastManager by lazy { LocalBroadcastManager.getInstance(requireActivity()) } private val tabListener = object : TabLayout.OnTabSelectedListener { @@ -78,7 +81,7 @@ open class HomeFragment : Fragment() { mainTablayout.getTabAt(if (getDefaultSharedPreferences(requireActivity()).getString("vanced_variant", "nonroot") == "root") 1 else 0)?.select() } - AppUtils.installing.observe(viewLifecycleOwner, { value -> + installing.observe(viewLifecycleOwner, { value -> if (value) hideTab() else showTab() }) diff --git a/app/src/main/java/com/vanced/manager/ui/fragments/SettingsFragment.kt b/app/src/main/java/com/vanced/manager/ui/fragments/SettingsFragment.kt index cf07ed0d52..95493daa54 100644 --- a/app/src/main/java/com/vanced/manager/ui/fragments/SettingsFragment.kt +++ b/app/src/main/java/com/vanced/manager/ui/fragments/SettingsFragment.kt @@ -115,11 +115,6 @@ class SettingsFragment : PreferenceFragmentCompat() { true } - findPreference("install_url")?.setOnPreferenceClickListener { - URLChangeFragment().show(childFragmentManager.beginTransaction(), "Install URL") - true - } - findPreference("clear_files")?.setOnPreferenceClickListener { with(requireActivity()) { listOf("apk", "apks").forEach { dir -> diff --git a/app/src/main/java/com/vanced/manager/ui/fragments/URLChangeFragment.kt b/app/src/main/java/com/vanced/manager/ui/fragments/URLChangeFragment.kt index cf5d4f5d03..3edf1d4af7 100644 --- a/app/src/main/java/com/vanced/manager/ui/fragments/URLChangeFragment.kt +++ b/app/src/main/java/com/vanced/manager/ui/fragments/URLChangeFragment.kt @@ -9,7 +9,7 @@ import android.view.ViewGroup import android.widget.EditText import android.widget.TextView import androidx.fragment.app.DialogFragment -import androidx.preference.PreferenceManager +import androidx.preference.PreferenceManager.getDefaultSharedPreferences import com.google.android.material.button.MaterialButton import com.vanced.manager.R import com.vanced.manager.utils.InternetTools.baseUrl @@ -29,8 +29,7 @@ class URLChangeFragment : DialogFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) val urlField = view.findViewById(R.id.url_input) - val prefs = PreferenceManager.getDefaultSharedPreferences(activity) - urlField.setText(prefs.getString("install_url", baseUrl), TextView.BufferType.EDITABLE) + urlField.setText(getDefaultSharedPreferences(requireActivity()).getString("install_url", baseUrl), TextView.BufferType.EDITABLE) view.findViewById(R.id.url_save).setOnClickListener { val finalUrl = if (urlField.text.startsWith("https://") || urlField.text.startsWith("http://")) @@ -38,14 +37,14 @@ class URLChangeFragment : DialogFragment() { else "https://${urlField.text}".removeSuffix("/") - - prefs.edit().putString("install_url", finalUrl).apply() - dismiss() - } - view.findViewById(R.id.url_reset).setOnClickListener { - prefs.edit().putString("install_url", baseUrl).apply() - dismiss() + saveUrl(finalUrl) } + view.findViewById(R.id.url_reset).setOnClickListener {saveUrl(baseUrl)} + } + + private fun saveUrl(url: String) { + getDefaultSharedPreferences(requireActivity()).edit().putString("install_url", url).apply() + dismiss() } } diff --git a/app/src/main/java/com/vanced/manager/ui/fragments/UpdateCheckFragment.kt b/app/src/main/java/com/vanced/manager/ui/fragments/UpdateCheckFragment.kt index e899004db3..0ddc59054d 100644 --- a/app/src/main/java/com/vanced/manager/ui/fragments/UpdateCheckFragment.kt +++ b/app/src/main/java/com/vanced/manager/ui/fragments/UpdateCheckFragment.kt @@ -1,34 +1,21 @@ package com.vanced.manager.ui.fragments -import android.content.Intent import android.graphics.Color import android.graphics.drawable.ColorDrawable -import android.net.Uri -import android.os.Build import android.os.Bundle -import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Button -import android.widget.ProgressBar import android.widget.TextView -import android.widget.Toast -import androidx.core.content.FileProvider import androidx.fragment.app.DialogFragment -import com.downloader.OnDownloadListener -import com.downloader.PRDownloader import com.google.android.material.button.MaterialButton import com.vanced.manager.R +import com.vanced.manager.utils.DownloadHelper.downloadManager import com.vanced.manager.utils.InternetTools.isUpdateAvailable -import kotlinx.coroutines.launch -import kotlinx.coroutines.runBlocking -import java.io.File class UpdateCheckFragment : DialogFragment() { - //private var downloadId: Long = 0 - override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? @@ -41,7 +28,6 @@ class UpdateCheckFragment : DialogFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - //activity?.registerReceiver(receiver, IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)) checkUpdates() view.findViewById