diff --git a/README.md b/README.md index 31780008..3cc0a264 100644 --- a/README.md +++ b/README.md @@ -23,4 +23,5 @@ After 3 months of development, we are finally ready to introduce Vanced Manager - topjohnwu for his wonderful [LibSU](https://github.com/topjohnwu/libsu) - Mindorks for their amazing [PRDownloader](https://github.com/MindorksOpenSource/PRDownloader) - aefyr for [SAI](https://github.com/aefyr/SAI), which was an inspiration for our Manager -- 100rabhkr for their [GetJson](https://github.com/100rabhkr/getjson) library +- kittinunf for the [Fuel](https://github.com/kittinunf/Fuel) library +- cbeust for the [klaxon](https://github.com/cbeust/klaxon) library diff --git a/app/build.gradle b/app/build.gradle index 3108aa49..85eea248 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -74,8 +74,15 @@ dependencies { // Other implementation 'com.crowdin.platform:mobile-sdk:1.1.4' - implementation 'com.github.100rabhkr:GetJSON:1.0' implementation 'com.github.topjohnwu.libsu:core:2.5.1' implementation 'com.mindorks.android:prdownloader:0.6.0' implementation 'com.squareup.okhttp3:okhttp:4.7.2' + implementation 'com.beust:klaxon:5.0.1' + + //core + implementation 'com.github.kittinunf.fuel:fuel:2.2.3' + //packages + implementation 'com.github.kittinunf.fuel:fuel-json:2.2.3' + implementation 'com.github.kittinunf.fuel:fuel-coroutines:2.2.3' + } diff --git a/app/src/main/java/com/vanced/manager/core/downloader/MicrogDownloadService.kt b/app/src/main/java/com/vanced/manager/core/downloader/MicrogDownloadService.kt index 364a9d4c..4df35987 100644 --- a/app/src/main/java/com/vanced/manager/core/downloader/MicrogDownloadService.kt +++ b/app/src/main/java/com/vanced/manager/core/downloader/MicrogDownloadService.kt @@ -23,6 +23,8 @@ import com.vanced.manager.utils.InternetTools.getObjectFromJson import com.vanced.manager.utils.NotificationHelper import com.vanced.manager.utils.NotificationHelper.cancelNotif import com.vanced.manager.utils.NotificationHelper.createBasicNotif +import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking import java.io.File class MicrogDownloadService: Service() { @@ -37,18 +39,24 @@ class MicrogDownloadService: Service() { } private fun downloadMicrog() { - //val prefs = getSharedPreferences("installPrefs", Context.MODE_PRIVATE) - val apkUrl = getObjectFromJson("${PreferenceManager.getDefaultSharedPreferences(this).getString("install_url", baseUrl)}/microg.json", "url", this) + val context = this + runBlocking { + launch { + //val prefs = getSharedPreferences("installPrefs", Context.MODE_PRIVATE) + val apkUrl = getObjectFromJson( + "${PreferenceManager.getDefaultSharedPreferences(context) + .getString("install_url", baseUrl)}/microg.json", "url") - val request = DownloadManager.Request(Uri.parse(apkUrl)) - request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI) - request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE) - request.setTitle(getString(R.string.downloading_file, "MicroG")) - request.setDestinationUri(Uri.fromFile(File("${filesDir.path}/microg.apk"))) - - val downloadManager = getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager - downloadId = downloadManager.enqueue(request) + val request = DownloadManager.Request(Uri.parse(apkUrl)) + request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI) + request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE) + request.setTitle(getString(R.string.downloading_file, "MicroG")) + request.setDestinationUri(Uri.fromFile(File("${filesDir.path}/microg.apk"))) + val downloadManager = getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager + downloadId = downloadManager.enqueue(request) + } + } /* val channel = 420 PRDownloader.download(apkUrl, filesDir.path, "microg.apk") diff --git a/app/src/main/java/com/vanced/manager/core/downloader/VancedDownloadService.kt b/app/src/main/java/com/vanced/manager/core/downloader/VancedDownloadService.kt index 71271981..a540a837 100644 --- a/app/src/main/java/com/vanced/manager/core/downloader/VancedDownloadService.kt +++ b/app/src/main/java/com/vanced/manager/core/downloader/VancedDownloadService.kt @@ -25,6 +25,8 @@ import com.vanced.manager.utils.InternetTools.getObjectFromJson import com.vanced.manager.utils.NotificationHelper.cancelNotif import com.vanced.manager.utils.NotificationHelper.createBasicNotif import com.vanced.manager.utils.NotificationHelper.displayDownloadNotif +import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking import java.io.File class VancedDownloadService: Service() { @@ -42,39 +44,52 @@ class VancedDownloadService: Service() { private fun downloadSplits( type: String = "arch" ) { - val defPrefs = PreferenceManager.getDefaultSharedPreferences(this) - val baseUrl = defPrefs.getString("install_url", baseUrl) - val vancedVer = getObjectFromJson("$baseUrl/vanced.json", "version", this) + val context = this + runBlocking { + launch { + val defPrefs = PreferenceManager.getDefaultSharedPreferences(context) + val baseUrl = defPrefs.getString("install_url", baseUrl) + val vancedVer = getObjectFromJson("$baseUrl/vanced.json", "version") - val prefs = getSharedPreferences("installPrefs", Context.MODE_PRIVATE) - val variant = PreferenceManager.getDefaultSharedPreferences(this).getString("vanced_variant", "nonroot") - val lang = prefs?.getString("lang", "en") - val theme = prefs?.getString("theme", "dark") - val arch = - when { - Build.SUPPORTED_ABIS.contains("x86") -> "x86" - Build.SUPPORTED_ABIS.contains("arm64-v8a") -> "arm64_v8a" - else -> "armeabi_v7a" + val prefs = getSharedPreferences("installPrefs", Context.MODE_PRIVATE) + val variant = PreferenceManager.getDefaultSharedPreferences(context) + .getString("vanced_variant", "nonroot") + val lang = prefs?.getString("lang", "en") + val theme = prefs?.getString("theme", "dark") + val arch = + when { + Build.SUPPORTED_ABIS.contains("x86") -> "x86" + Build.SUPPORTED_ABIS.contains("arm64-v8a") -> "arm64_v8a" + else -> "armeabi_v7a" + } + val url = + when (type) { + "arch" -> "$baseUrl/apks/v$vancedVer/$variant/Arch/split_config.$arch.apk" + "theme" -> "$baseUrl/apks/v$vancedVer/$variant/Theme/$theme.apk" + "lang" -> "$baseUrl/apks/v$vancedVer/$variant/Language/split_config.$lang.apk" + "enlang" -> "$baseUrl/apks/v$vancedVer/$variant/Language/split_config.en.apk" + else -> throw NotImplementedError("This type of APK is NOT valid. What the hell did you even do?") + } + + apkType = type + val request = DownloadManager.Request(Uri.parse(url)) + request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI) + request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE) + request.setTitle(getString(R.string.downloading_file, "MicroG")) + request.setDestinationUri( + Uri.fromFile( + File( + "${filesDir.path}/${getFileNameFromUrl( + url + )}" + ) + ) + ) + + val downloadManager = getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager + downloadId = downloadManager.enqueue(request) } - val url = - when (type) { - "arch" -> "$baseUrl/apks/v$vancedVer/$variant/Arch/split_config.$arch.apk" - "theme" -> "$baseUrl/apks/v$vancedVer/$variant/Theme/$theme.apk" - "lang" -> "$baseUrl/apks/v$vancedVer/$variant/Language/split_config.$lang.apk" - "enlang" -> "$baseUrl/apks/v$vancedVer/$variant/Language/split_config.en.apk" - else -> throw NotImplementedError("This type of APK is NOT valid. What the hell did you even do?") - } - - apkType = type - val request = DownloadManager.Request(Uri.parse(url)) - request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI) - request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE) - request.setTitle(getString(R.string.downloading_file, "MicroG")) - request.setDestinationUri(Uri.fromFile(File("${filesDir.path}/${getFileNameFromUrl(url)}"))) - - val downloadManager = getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager - downloadId = downloadManager.enqueue(request) - + } /* val channel = 69 PRDownloader 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 da535095..61772848 100644 --- a/app/src/main/java/com/vanced/manager/ui/MainActivity.kt +++ b/app/src/main/java/com/vanced/manager/ui/MainActivity.kt @@ -17,17 +17,24 @@ import androidx.navigation.ui.setupWithNavController import androidx.preference.PreferenceManager import com.crowdin.platform.Crowdin import com.crowdin.platform.LoadingStateListener -import com.dezlum.codelabs.getjson.GetJson +import com.downloader.Error +import com.downloader.OnDownloadListener +import com.downloader.PRDownloader import com.vanced.manager.R +import com.vanced.manager.core.installer.AppInstaller import com.vanced.manager.databinding.ActivityMainBinding import com.vanced.manager.ui.dialogs.DialogContainer import com.vanced.manager.ui.dialogs.DialogContainer.installAlertBuilder import com.vanced.manager.ui.dialogs.DialogContainer.launchVanced import com.vanced.manager.ui.dialogs.DialogContainer.regularPackageInstalled +import com.vanced.manager.ui.fragments.HomeFragment import com.vanced.manager.ui.fragments.UpdateCheckFragment import com.vanced.manager.utils.InternetTools +import com.vanced.manager.utils.NotificationHelper import com.vanced.manager.utils.PackageHelper import com.vanced.manager.utils.ThemeHelper.setFinalTheme +import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking class MainActivity : AppCompatActivity() { @@ -178,9 +185,13 @@ class MainActivity : AppCompatActivity() { } private fun checkUpdates() { - if (GetJson().isConnected(this) && InternetTools.isUpdateAvailable()) { - val fm = supportFragmentManager - UpdateCheckFragment().show(fm, "UpdateCheck") + runBlocking { + launch { + if (InternetTools.isUpdateAvailable()) { + val fm = supportFragmentManager + UpdateCheckFragment().show(fm, "UpdateCheck") + } + } } } diff --git a/app/src/main/java/com/vanced/manager/ui/fragments/ManagerChangelogFragment.kt b/app/src/main/java/com/vanced/manager/ui/fragments/ManagerChangelogFragment.kt index 9f3fe2f3..ab6ea775 100644 --- a/app/src/main/java/com/vanced/manager/ui/fragments/ManagerChangelogFragment.kt +++ b/app/src/main/java/com/vanced/manager/ui/fragments/ManagerChangelogFragment.kt @@ -6,8 +6,11 @@ import android.view.View import android.view.ViewGroup import android.widget.TextView import androidx.fragment.app.Fragment -import com.dezlum.codelabs.getjson.GetJson +import androidx.preference.PreferenceManager import com.vanced.manager.R +import com.vanced.manager.utils.InternetTools +import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking class ManagerChangelogFragment : Fragment() { @@ -21,12 +24,17 @@ class ManagerChangelogFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - val changelogTxt = view.findViewById(R.id.manager_changelog) + runBlocking { + launch { + val changelogTxt = view.findViewById(R.id.manager_changelog) - if (GetJson().isConnected(activity)) { - val checkUrl = GetJson().AsJSONObject("https://x1nto.github.io/VancedFiles/manager.json") - val changelog = checkUrl.get("changelog").asString - changelogTxt.text = changelog + var baseUrl = PreferenceManager.getDefaultSharedPreferences(context) + .getString("install_url", InternetTools.baseUrl) + baseUrl = baseUrl?.trimEnd('/') + + val changelog = InternetTools.getObjectFromJson("$baseUrl/manager.json", "changelog"); + changelogTxt.text = changelog + } } } } diff --git a/app/src/main/java/com/vanced/manager/ui/fragments/MicrogChangelogFragment.kt b/app/src/main/java/com/vanced/manager/ui/fragments/MicrogChangelogFragment.kt index f51a4138..67ae6f11 100644 --- a/app/src/main/java/com/vanced/manager/ui/fragments/MicrogChangelogFragment.kt +++ b/app/src/main/java/com/vanced/manager/ui/fragments/MicrogChangelogFragment.kt @@ -1,13 +1,18 @@ package com.vanced.manager.ui.fragments import android.os.Bundle +import android.text.InputType +import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.TextView import androidx.fragment.app.Fragment -import com.dezlum.codelabs.getjson.GetJson +import androidx.preference.PreferenceManager import com.vanced.manager.R +import com.vanced.manager.utils.InternetTools +import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking class MicrogChangelogFragment : Fragment() { @@ -21,12 +26,17 @@ class MicrogChangelogFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - val changelogTxt = view.findViewById(R.id.microg_changelog) + runBlocking { + launch { + val changelogTxt = view.findViewById(R.id.microg_changelog) - if (GetJson().isConnected(activity)) { - val checkUrl = GetJson().AsJSONObject("https://x1nto.github.io/VancedFiles/microg.json") - val changelog = checkUrl.get("changelog").asString - changelogTxt.text = changelog + var baseUrl = PreferenceManager.getDefaultSharedPreferences(context) + .getString("install_url", InternetTools.baseUrl) + baseUrl = baseUrl?.trimEnd('/') + + var changelog = InternetTools.getObjectFromJson("$baseUrl/microg.json", "changelog"); + changelogTxt.text = changelog + } } } } 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 9da9c9b6..f25e5d2a 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 @@ -21,13 +21,15 @@ import android.widget.TextView import android.widget.Toast import androidx.core.content.FileProvider import androidx.fragment.app.DialogFragment -import com.dezlum.codelabs.getjson.GetJson import com.downloader.Error 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.InternetTools import com.vanced.manager.utils.InternetTools.isUpdateAvailable +import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking import java.io.File class UpdateCheckFragment : DialogFragment() { @@ -60,8 +62,8 @@ class UpdateCheckFragment : DialogFragment() { private fun checkUpdates() { val updatebtn = view?.findViewById