json fetch and home screen refresh adjustments

This commit is contained in:
Xinto 2020-09-17 23:25:44 +04:00
parent c95a0eaf2b
commit 5136e6938d
7 changed files with 56 additions and 25 deletions

View File

@ -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")

View File

@ -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) {

View File

@ -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) -> {

View File

@ -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)
}

View File

@ -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) {

View File

@ -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))

View File

@ -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>