json fetch and home screen refresh adjustments
This commit is contained in:
parent
c95a0eaf2b
commit
5136e6938d
|
@ -11,6 +11,7 @@ import com.vanced.manager.utils.InternetTools.baseUrl
|
|||
import com.vanced.manager.utils.JsonHelper.getJson
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
open class App: Application() {
|
||||
|
@ -21,20 +22,23 @@ open class App: Application() {
|
|||
var manager: JsonObject? = null
|
||||
|
||||
override fun onCreate() {
|
||||
loadJson()
|
||||
super.onCreate()
|
||||
PRDownloader.initialize(this)
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
loadJsonAsync().await()
|
||||
super.onCreate()
|
||||
PRDownloader.initialize(this@App)
|
||||
|
||||
Crowdin.init(this@App,
|
||||
CrowdinConfig.Builder()
|
||||
.withDistributionHash("36c51aed3180a4f43073d28j4s6")
|
||||
.withNetworkType(NetworkType.WIFI)
|
||||
.build()
|
||||
)
|
||||
}
|
||||
|
||||
Crowdin.init(this,
|
||||
CrowdinConfig.Builder()
|
||||
.withDistributionHash("36c51aed3180a4f43073d28j4s6")
|
||||
.withNetworkType(NetworkType.WIFI)
|
||||
.build()
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
fun loadJson() = CoroutineScope(Dispatchers.IO).launch {
|
||||
fun loadJsonAsync() = CoroutineScope(Dispatchers.IO).async {
|
||||
val latest = getJson("$baseUrl/latest.json")
|
||||
vanced = latest.obj("vanced")
|
||||
music = latest.obj("music")
|
||||
|
|
|
@ -12,7 +12,7 @@ import com.vanced.manager.R
|
|||
import com.vanced.manager.utils.PackageHelper.isPackageInstalled
|
||||
|
||||
open class DataModel(
|
||||
jsonObject: JsonObject?,
|
||||
private val jsonObject: JsonObject?,
|
||||
variant: String = "nonroot",
|
||||
app: String,
|
||||
private val context: Context
|
||||
|
@ -35,7 +35,7 @@ open class DataModel(
|
|||
val buttonIcon = ObservableField<Drawable>()
|
||||
val changelog = ObservableField<String>()
|
||||
|
||||
init {
|
||||
fun fetch() {
|
||||
isAppInstalled.set(isPackageInstalled(appPkg, context.packageManager))
|
||||
versionName.set(jsonObject?.string("version")?.removeSuffix("-vanced") ?: context.getString(R.string.unavailable))
|
||||
installedVersionName.set(getPkgVersionName(isAppInstalled.get(), appPkg))
|
||||
|
@ -45,6 +45,10 @@ open class DataModel(
|
|||
buttonIcon.set(compareIntDrawable(installedVersionCode.get(), versionCode.get()))
|
||||
changelog.set(jsonObject?.string("changelog") ?: context.getString(R.string.unavailable))
|
||||
}
|
||||
|
||||
init {
|
||||
fetch()
|
||||
}
|
||||
|
||||
private fun getPkgVersionName(toCheck: Boolean, pkg: String): String {
|
||||
return if (toCheck) {
|
||||
|
|
|
@ -4,17 +4,19 @@ import android.content.Context
|
|||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.view.MenuItem
|
||||
import android.widget.Toast
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.databinding.DataBindingUtil
|
||||
import androidx.navigation.fragment.NavHostFragment
|
||||
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
|
||||
import com.crowdin.platform.Crowdin
|
||||
import com.crowdin.platform.LoadingStateListener
|
||||
import com.google.android.material.tabs.TabLayout
|
||||
import com.google.android.material.tabs.TabLayoutMediator
|
||||
import com.google.firebase.messaging.FirebaseMessaging
|
||||
import com.topjohnwu.superuser.Shell
|
||||
import com.vanced.manager.R
|
||||
import com.vanced.manager.adapter.SectionVariantAdapter
|
||||
import com.vanced.manager.core.App
|
||||
import com.vanced.manager.databinding.ActivityMainBinding
|
||||
import com.vanced.manager.ui.dialogs.DialogContainer
|
||||
import com.vanced.manager.ui.fragments.UpdateCheckFragment
|
||||
|
@ -45,6 +47,12 @@ class MainActivity : AppCompatActivity() {
|
|||
private val tabListener = object : TabLayout.OnTabSelectedListener {
|
||||
|
||||
override fun onTabSelected(tab: TabLayout.Tab) {
|
||||
if (tab.position == 1 && !Shell.rootAccess()) {
|
||||
tab.select(0)
|
||||
Toast.makeText(this@MainActivity, getString(R.string.root_not_granted), Toast.LENGTH_SHORT).show()
|
||||
return
|
||||
}
|
||||
|
||||
getDefaultSharedPreferences(this@MainActivity).edit().putString("vanced_variant",
|
||||
when (tab.position) {
|
||||
1 -> "root"
|
||||
|
@ -104,6 +112,12 @@ class MainActivity : AppCompatActivity() {
|
|||
binding.mainTablayout.addOnTabSelectedListener(tabListener)
|
||||
}
|
||||
|
||||
override fun onBackPressed() {
|
||||
super.onBackPressed()
|
||||
val navHost = supportFragmentManager.findFragmentById(R.id.nav_host) as NavHostFragment
|
||||
navHost.navController.popBackStack()
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
if (installing) {
|
||||
return false
|
||||
|
@ -131,10 +145,14 @@ class MainActivity : AppCompatActivity() {
|
|||
super.attachBaseContext(Crowdin.wrapContext(newBase))
|
||||
}
|
||||
|
||||
fun TabLayout.Tab.select(position: Int) {
|
||||
this.parent?.getTabAt(position)?.select()
|
||||
}
|
||||
|
||||
private fun initDialogs() {
|
||||
val prefs = getDefaultSharedPreferences(this)
|
||||
val variant = prefs.getString("vanced_variant", "nonroot")
|
||||
val showRootDialog = prefs.getBoolean("show_root_dialog", true)
|
||||
prefs.getBoolean("show_root_dialog", true)
|
||||
|
||||
when {
|
||||
prefs.getBoolean("firstStart", true) -> {
|
||||
|
|
|
@ -153,6 +153,7 @@ open class HomeFragment : Fragment(), View.OnClickListener {
|
|||
private fun registerReceivers() {
|
||||
val intentFilter = IntentFilter()
|
||||
intentFilter.addAction(INSTALL_FAILED)
|
||||
intentFilter.addAction(REFRESH_HOME)
|
||||
localBroadcastManager.registerReceiver(broadcastReceiver, intentFilter)
|
||||
}
|
||||
|
||||
|
|
|
@ -67,6 +67,8 @@ class MainFragment : Fragment() {
|
|||
findViewById<MaterialToolbar>(R.id.home_toolbar).navigationIcon = if (isNeeded) ContextCompat.getDrawable(requireActivity(), R.drawable.ic_keyboard_backspace_black_24dp) else null
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
when (item.itemId) {
|
||||
|
|
|
@ -27,7 +27,6 @@ import com.vanced.manager.utils.PackageHelper.uninstallApk
|
|||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import okhttp3.internal.wait
|
||||
|
||||
open class HomeViewModel(application: Application): AndroidViewModel(application) {
|
||||
|
||||
|
@ -47,13 +46,15 @@ open class HomeViewModel(application: Application): AndroidViewModel(application
|
|||
|
||||
val navigateDestination : LiveData<Event<Int>> = _navigateDestination
|
||||
|
||||
fun fetchData() {
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
fetching.set(true)
|
||||
managerApp.loadJson()
|
||||
Crowdin.forceUpdate(getApplication())
|
||||
fetching.set(false)
|
||||
}
|
||||
fun fetchData() = CoroutineScope(Dispatchers.IO).launch {
|
||||
fetching.set(true)
|
||||
managerApp.loadJsonAsync().await()
|
||||
vanced.get()?.fetch()
|
||||
music.get()?.fetch()
|
||||
microg.get()?.fetch()
|
||||
manager.get()?.fetch()
|
||||
Crowdin.forceUpdate(getApplication())
|
||||
fetching.set(false)
|
||||
}
|
||||
|
||||
//private val microgSnackbar = Snackbar.make(, R.string.no_microg, Snackbar.LENGTH_LONG).setAction(R.string.install) { downloadMicrog(getApplication()) }
|
||||
|
@ -143,8 +144,9 @@ open class HomeViewModel(application: Application): AndroidViewModel(application
|
|||
|
||||
init {
|
||||
fetching.set(true)
|
||||
while (managerApp.manager == null)
|
||||
this.wait()
|
||||
//while (managerApp.manager == null)
|
||||
//this.wait()
|
||||
|
||||
vanced.set(DataModel(managerApp.vanced, variant, "vanced", app))
|
||||
microg.set(DataModel(managerApp.microg, app = "microg", context = app))
|
||||
music.set(DataModel(managerApp.music, app = "music", context = app))
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
app:titleTextColor="?attr/toolbarIconColor"
|
||||
android:background="@android:color/transparent"/>
|
||||
android:background="?colorSurface"/>
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
|
|
Loading…
Reference in New Issue