From 0d6870f7b8a41f60b263766bc3dc1d08d31a9ad0 Mon Sep 17 00:00:00 2001 From: KevinX8 Date: Mon, 28 Sep 2020 04:40:46 +0100 Subject: [PATCH 001/113] New translations strings.xml (Polish) --- app/src/main/res/values-pl-rPL/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-pl-rPL/strings.xml b/app/src/main/res/values-pl-rPL/strings.xml index b712f389e0..0260df3345 100644 --- a/app/src/main/res/values-pl-rPL/strings.xml +++ b/app/src/main/res/values-pl-rPL/strings.xml @@ -41,13 +41,13 @@ Pomyślnie wyczyszczono pliki Analityka Firebase To pozwala nam zbierać informacje o wydajności aplikacji i dziennikach awarii - Language + Język Używaj niestandardowych kart Chrome Linki zostaną otwarte w niestandardowych kartach Chrome Linki zostaną otwarte w zewnętrznej przeglądarce Użyj nowego instalatora root (Eksperymentalnego) Ten instalator nie zależy od statusu weryfikacji podpisu. UWAGA: Vanced może zniknąć po ponownym uruchomieniu telefonu, jeśli zainstalujesz go za pomocą tego sposobu - System Default + Domyślny systemowy Motyw Śledź system Ciemny Motyw From bfd842bfc37ef220b5ba4c0f12a755b9d3e009d1 Mon Sep 17 00:00:00 2001 From: KevinX8 Date: Mon, 28 Sep 2020 04:40:47 +0100 Subject: [PATCH 002/113] New translations strings.xml (Indonesian) --- app/src/main/res/values-in-rID/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-in-rID/strings.xml b/app/src/main/res/values-in-rID/strings.xml index 94df6ad2a9..63776b5d75 100644 --- a/app/src/main/res/values-in-rID/strings.xml +++ b/app/src/main/res/values-in-rID/strings.xml @@ -47,7 +47,7 @@ Tautan akan terbuka di Browser Eksternal Gunakan pemasang root yang baru (Eksperimental) Pemasang ini tidak bergantung pada status Signature Verification. PERINGATAN: Vanced mungkin menghilang setelah reboot jika Anda memasangnya menggunakan ini - Default Sistem + Standar Sistem Tema Ikuti Sistem Tema Gelap From a579fb6e832dfa44791903b79d724ab5ec23444b Mon Sep 17 00:00:00 2001 From: KevinX8 Date: Mon, 28 Sep 2020 04:40:49 +0100 Subject: [PATCH 003/113] New translations strings.xml (German) --- app/src/main/res/values-de-rDE/strings.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index 10f806c2f2..8fd2c7674c 100644 --- a/app/src/main/res/values-de-rDE/strings.xml +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -39,15 +39,15 @@ Theme: %1$s Heruntergeladene Dateien löschen Daten erfolgreich gelöscht - Firebase Analytics - This lets us collect information about app performance and crash logs - Language + Firebase-Analyse + So können wir Informationen über die Performance der App und Absturzprotokolle sammeln + Sprache Verwende Chrome Custom Tabs Links werden in Chrome Custom Tabs geöffnet Links werden in einem externen Browser geöffnet - Use the new root installer (Experimental) - This installer does not depend on Signature Verification status. WARNING: Vanced may disappear after reboot if you install it using this - System Default + Neuen Root-Installer verwenden (Experimentell) + Dieser Installer ist unabhängig vom Status der Signaturverifizierung. ACHTUNG: Vanced könnte nach dem Neustart verschwinden, wenn Sie es mit dem Installer installieren + Standardeinstellung Theme Folge Systemeinstellung Dunkles Theme From 76a98b186f9210e754373c73ca02e1a4efc248c6 Mon Sep 17 00:00:00 2001 From: KevinX8 Date: Mon, 28 Sep 2020 04:40:50 +0100 Subject: [PATCH 004/113] New translations strings.xml (Norwegian) --- app/src/main/res/values-no-rNO/strings.xml | 50 +++++++++++----------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/app/src/main/res/values-no-rNO/strings.xml b/app/src/main/res/values-no-rNO/strings.xml index 0dc560d28a..6177f90580 100644 --- a/app/src/main/res/values-no-rNO/strings.xml +++ b/app/src/main/res/values-no-rNO/strings.xml @@ -20,7 +20,7 @@ Root access not granted Utilgjengelig Oppdater - Useful Links + Nyttige lenker Nettside Støtt oss! %1$s version number was copied! @@ -31,55 +31,55 @@ Lilla Rød Gul - Interface + Grensesnitt Manager Se etter oppdateringer Chosen installation preferences - Language(s): %1$s - Theme: %1$s - Clear downloaded files + Språk: %1$s + Tema: %1$s + Fjern nedlastede filer Successfully cleared files Firebase Analytics This lets us collect information about app performance and crash logs - Language - Use Chrome Custom Tabs - Links will open in Chrome Custom Tabs - Links will open in an External Browser + Språk + Bruk Chrome Custom Tabs + Lenker vil åpne i Chrome Custom Tabs + Lenker vil åpnes i en ekstern nettleser Use the new root installer (Experimental) This installer does not depend on Signature Verification status. WARNING: Vanced may disappear after reboot if you install it using this System Default - Theme + Tema Follow System - Dark Theme - Light Theme + Mørkt tema + Lyst tema Update Channel URL %1$s Push Notifications Receive push notifications when an update for %1$s is released Re-check Manager Update Center - Update found! - No new updates + Oppdatering funnet! + Ingen nye oppdateringer Guide - Stop! + Stopp! You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the magisk module/using TWRP Vanced uninstaller. MIUI detected! In order to install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM) - Error + Feil Make sure that you downloaded the app from vanced.app, the Vanced Discord server or the Vanced GitHub - Success! - Vanced has successfully been installed! Open now? - Vanced Music has successfully been installed! Open now? - Open - Welcome + Suksess! + Vanced har blitt installert! Åpne nå? + Vanced Music har blitt installert! Åpne nå? + Åpne + Velkommen - Choose your preferred language(s) for Vanced - Note: English will always be installed as an additional language as well. + Velg dine foretrukne språk for Vanced + Merk: Engelsk vil alltid bli installert som et ekstra språk. Choose your preferred theme for Vanced - Finish + Fullfør Light + Black Light + Dark - Next + Neste Manager Devs Sources From f9ef147dee25985138913abf9ad812ac74828648 Mon Sep 17 00:00:00 2001 From: KevinX8 Date: Mon, 28 Sep 2020 04:40:52 +0100 Subject: [PATCH 005/113] New translations strings.xml (Portuguese, Brazilian) --- app/src/main/res/values-pt-rBR/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 159cdfa932..2e92bda9bc 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -46,8 +46,8 @@ Os links serão abertos nas abas personalizadas do Chrome Os links serão abertos em um navegador externo Usar o novo instalador root (Experimental) - Este instalador não depende do status de Verificação de Assinatura. AVISO: Vanced pode desaparecer após reiniciar se você instalá-lo usando isto - Padrão do Sistema + Este instalador não depende do status de verificação de assinatura. AVISO: Vanced pode desaparecer após reiniciar se você instalá-lo usando isto + Padrão do sistema Tema Padrão do sistema Escuro From 255c21fa15eb16f272a428408144515450a3b89d Mon Sep 17 00:00:00 2001 From: KevinX8 Date: Mon, 28 Sep 2020 16:50:00 +0100 Subject: [PATCH 006/113] New translations strings.xml (Serbian (Cyrillic)) --- app/src/main/res/values-sr-rSP/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-sr-rSP/strings.xml b/app/src/main/res/values-sr-rSP/strings.xml index d5d9e01a9a..6ce32666f0 100644 --- a/app/src/main/res/values-sr-rSP/strings.xml +++ b/app/src/main/res/values-sr-rSP/strings.xml @@ -41,13 +41,13 @@ Успешно брисање датотека Firebase Анализа Ово нам омогућава да прикупљамо извештаје о перформансама и грешкама - Language + Језик Користите Chrome Custom Tabs Линкови ће бити отворени у Chrome Custom Tabs Линкови ће бити отвотрни у екстерном претраживачу Користи нову root installer апликацију ( Експериментално) Installer апликација не зависи од статуса верификационог потписа. УПОЗОРЕЊЕ: Ако користите ову опцију може да се деси да Vanced апликација се обрише после рестарта - System Default + Системски подразумевано Тема Као у систему Тамна Тема From a58ba4643f7d905532b5c0cea75a3acc794a4149 Mon Sep 17 00:00:00 2001 From: KevinX8 Date: Tue, 29 Sep 2020 04:47:46 +0100 Subject: [PATCH 007/113] New translations strings.xml (Indonesian) --- app/src/main/res/values-in-rID/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-in-rID/strings.xml b/app/src/main/res/values-in-rID/strings.xml index 63776b5d75..6cdaf48c61 100644 --- a/app/src/main/res/values-in-rID/strings.xml +++ b/app/src/main/res/values-in-rID/strings.xml @@ -40,7 +40,7 @@ Hapus file yang diunduh Berhasil menghapus file Analisis Firebase - Ini menginjinkan kami mengumpulkan informasi tentang performa aplikasi dan catatan crash + Ini mengijinkan kami mengumpulkan informasi tentang performa aplikasi dan catatan crash Bahasa Gunakan Chrome Custom Tabs Tautan akan terbuka di Chrome Custom Tabs From 41fe28a684410d76ba92e6b6a51c92529b9cdf6c Mon Sep 17 00:00:00 2001 From: Xinto Date: Tue, 29 Sep 2020 14:47:38 +0400 Subject: [PATCH 008/113] manager language selector and url changer fixes --- app/build.gradle | 4 +- app/src/main/AndroidManifest.xml | 2 + .../vanced/manager/adapter/VariantAdapter.kt | 3 - .../main/java/com/vanced/manager/core/App.kt | 25 ++++---- .../core/downloader/MicrogDownloader.kt | 6 +- .../core/downloader/MusicDownloader.kt | 5 +- .../core/downloader/VancedDownloader.kt | 11 ++-- .../com/vanced/manager/model/DataModel.kt | 18 ++---- .../com/vanced/manager/ui/MainActivity.kt | 12 ++++ .../ui/fragments/DevSettingsFragment.kt | 49 +++------------ .../manager/ui/fragments/HomeFragment.kt | 5 +- .../manager/ui/fragments/SettingsFragment.kt | 5 -- .../manager/ui/fragments/URLChangeFragment.kt | 22 ++++--- .../ui/fragments/UpdateCheckFragment.kt | 63 ++----------------- .../VancedLanguageSelectionFragment.kt | 2 +- .../manager/ui/viewmodels/HomeViewModel.kt | 59 +++++++++-------- .../ui/viewmodels/HomeViewModelFactory.kt | 13 ++++ .../vanced/manager/utils/DownloadHelper.kt | 57 +++++++++++++++++ .../com/vanced/manager/utils/InternetTools.kt | 10 +-- .../com/vanced/manager/utils/JsonHelper.kt | 17 ++--- .../manager/utils/LanguageContextWrapper.kt | 13 ++-- .../com/vanced/manager/utils/PackageHelper.kt | 2 +- app/src/main/res/xml/dev_settings.xml | 4 ++ app/src/main/res/xml/preferences.xml | 4 -- 24 files changed, 204 insertions(+), 207 deletions(-) create mode 100644 app/src/main/java/com/vanced/manager/ui/viewmodels/HomeViewModelFactory.kt diff --git a/app/build.gradle b/app/build.gradle index a4a687d255..9e4cc0a0ab 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,7 +21,7 @@ android { minSdkVersion 21 targetSdkVersion 30 versionCode 13 - versionName "1.3.0b (Arcturus)" + versionName "1.3.0 (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..28d366d339 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 @@ -21,14 +21,14 @@ object MicrogDownloader { fun downloadMicrog(context: Context) { CoroutineScope(Dispatchers.IO).launch { - val url = getJsonString("microg.json", "url", context) + val url = (context.applicationContext as App).microg.get()?.string("url") //downloadId = download(url, "apk", "microg.apk", this@MicrogDownloadService) 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 { 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..3884f734ee 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 @@ -21,8 +21,7 @@ object MusicDownloader { 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" + val url = "https://vanced.app/api/v1/music/v${(context.applicationContext as App).music.get()?.string("version")}.apk" //downloadId = download(url, "apk", "music.apk", this@MusicDownloadService) 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..75485502bf 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 @@ -17,7 +17,6 @@ import com.vanced.manager.utils.AppUtils.mutableInstall 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 @@ -50,10 +49,11 @@ object VancedDownloader { 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)) + //registerReceiver(receiver, IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE))val app = context.applicationContext as App + 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 +61,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 +71,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) } 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..f9a7194a76 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 { 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..cd8fe2f304 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 @@ -117,6 +118,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") 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..60923496ce 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.ui.viewmodels.HomeViewModelFactory import com.vanced.manager.utils.AppUtils 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 { 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..bc5e32f912 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 @@ -1,5 +1,6 @@ package com.vanced.manager.ui.fragments +import android.content.Context import android.graphics.Color import android.graphics.drawable.ColorDrawable import android.os.Bundle @@ -9,9 +10,10 @@ 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.core.App import com.vanced.manager.utils.InternetTools.baseUrl class URLChangeFragment : DialogFragment() { @@ -29,8 +31,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 +39,15 @@ 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, requireActivity()) } + view.findViewById(R.id.url_reset).setOnClickListener {saveUrl(baseUrl, requireActivity())} + } + + private fun saveUrl(url: String, context: Context) { + getDefaultSharedPreferences(requireActivity()).edit().putString("install_url", url).apply() + (context.applicationContext as App).loadJsonAsync() + 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..8836980288 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,29 +1,19 @@ 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() { @@ -65,57 +55,16 @@ class UpdateCheckFragment : DialogFragment() { view?.findViewById