2020-04-03 16:40:54 +00:00
|
|
|
package com.vanced.manager.ui
|
2020-03-16 15:41:57 +00:00
|
|
|
|
2020-07-02 10:23:12 +00:00
|
|
|
import android.content.Context
|
2020-09-20 14:41:28 +00:00
|
|
|
import android.content.Intent
|
2020-09-29 10:47:38 +00:00
|
|
|
import android.content.res.Configuration
|
2020-03-16 15:41:57 +00:00
|
|
|
import android.os.Bundle
|
2020-06-22 17:28:45 +00:00
|
|
|
import android.util.Log
|
2020-04-05 18:07:26 +00:00
|
|
|
import android.view.MenuItem
|
2020-07-06 14:29:27 +00:00
|
|
|
import androidx.appcompat.app.AppCompatActivity
|
2020-09-21 07:53:42 +00:00
|
|
|
import androidx.core.content.ContextCompat
|
|
|
|
import androidx.navigation.NavDestination
|
|
|
|
import androidx.navigation.findNavController
|
|
|
|
import androidx.navigation.ui.AppBarConfiguration
|
|
|
|
import androidx.navigation.ui.setupWithNavController
|
2020-11-23 16:00:41 +00:00
|
|
|
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
|
2020-07-06 11:38:00 +00:00
|
|
|
import com.crowdin.platform.Crowdin
|
|
|
|
import com.crowdin.platform.LoadingStateListener
|
2020-08-06 07:46:07 +00:00
|
|
|
import com.google.firebase.messaging.FirebaseMessaging
|
2020-11-23 16:00:41 +00:00
|
|
|
import com.vanced.manager.BuildConfig.ENABLE_CROWDIN_AUTH
|
2020-12-19 08:35:07 +00:00
|
|
|
import com.vanced.manager.BuildConfig.VERSION_CODE
|
2020-04-03 16:40:54 +00:00
|
|
|
import com.vanced.manager.R
|
2020-06-04 07:35:26 +00:00
|
|
|
import com.vanced.manager.databinding.ActivityMainBinding
|
2020-07-06 14:29:27 +00:00
|
|
|
import com.vanced.manager.ui.dialogs.DialogContainer
|
2020-10-31 19:45:39 +00:00
|
|
|
import com.vanced.manager.ui.dialogs.ManagerUpdateDialog
|
2020-11-02 14:41:39 +00:00
|
|
|
import com.vanced.manager.ui.dialogs.URLChangeDialog
|
2020-09-21 07:53:42 +00:00
|
|
|
import com.vanced.manager.ui.fragments.HomeFragmentDirections
|
|
|
|
import com.vanced.manager.ui.fragments.SettingsFragmentDirections
|
2021-01-16 17:00:38 +00:00
|
|
|
import com.vanced.manager.utils.*
|
2020-03-16 15:41:57 +00:00
|
|
|
|
2020-12-16 13:21:45 +00:00
|
|
|
|
2020-07-06 14:29:27 +00:00
|
|
|
class MainActivity : AppCompatActivity() {
|
2020-03-16 15:41:57 +00:00
|
|
|
|
2020-09-20 14:41:28 +00:00
|
|
|
lateinit var binding: ActivityMainBinding
|
2020-09-21 07:53:42 +00:00
|
|
|
private val navHost by lazy { findNavController(R.id.nav_host) }
|
2020-09-18 17:55:45 +00:00
|
|
|
|
2020-07-06 11:38:00 +00:00
|
|
|
private val loadingObserver = object : LoadingStateListener {
|
|
|
|
val tag = "VMLocalisation"
|
|
|
|
override fun onDataChanged() {
|
|
|
|
Log.d(tag, "Loaded data")
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun onFailure(throwable: Throwable) {
|
2020-11-02 14:41:39 +00:00
|
|
|
Log.d(tag, "Failed to load data: $throwable")
|
2020-07-06 11:38:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
2020-08-26 12:29:05 +00:00
|
|
|
|
2020-07-04 13:44:28 +00:00
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
2020-11-05 18:26:27 +00:00
|
|
|
setFinalTheme()
|
2020-07-04 13:44:28 +00:00
|
|
|
super.onCreate(savedInstanceState)
|
2020-11-05 18:26:27 +00:00
|
|
|
if (ENABLE_CROWDIN_AUTH)
|
|
|
|
authCrowdin()
|
2020-11-03 07:28:18 +00:00
|
|
|
|
2020-11-23 20:33:24 +00:00
|
|
|
binding = ActivityMainBinding.inflate(layoutInflater)
|
|
|
|
setContentView(binding.root)
|
2020-09-16 05:18:07 +00:00
|
|
|
|
2020-07-04 13:44:28 +00:00
|
|
|
with(binding) {
|
2020-10-31 19:45:39 +00:00
|
|
|
setSupportActionBar(toolbar)
|
2020-11-23 20:33:24 +00:00
|
|
|
toolbar.setupWithNavController(
|
|
|
|
this@MainActivity.navHost,
|
|
|
|
AppBarConfiguration(this@MainActivity.navHost.graph)
|
|
|
|
)
|
2020-09-21 07:53:42 +00:00
|
|
|
}
|
|
|
|
navHost.addOnDestinationChangedListener { _, currFrag: NavDestination, _ ->
|
|
|
|
setDisplayHomeAsUpEnabled(currFrag.id != R.id.home_fragment)
|
2020-07-04 13:44:28 +00:00
|
|
|
}
|
|
|
|
|
2020-10-31 19:45:39 +00:00
|
|
|
initDialogs(intent.getBooleanExtra("firstLaunch", false))
|
2020-12-16 13:21:45 +00:00
|
|
|
manager.observe(this) {
|
|
|
|
if (manager.value?.int("versionCode") ?: 0 > VERSION_CODE) {
|
|
|
|
ManagerUpdateDialog.newInstance(false).show(this)
|
|
|
|
}
|
|
|
|
}
|
2020-07-04 13:44:28 +00:00
|
|
|
}
|
|
|
|
|
2020-09-21 07:53:42 +00:00
|
|
|
override fun onBackPressed() {
|
|
|
|
if (!navHost.popBackStack())
|
|
|
|
finish()
|
|
|
|
}
|
|
|
|
|
|
|
|
private fun setDisplayHomeAsUpEnabled(isNeeded: Boolean) {
|
2020-10-31 19:45:39 +00:00
|
|
|
binding.toolbar.navigationIcon = if (isNeeded) ContextCompat.getDrawable(this, R.drawable.ic_keyboard_backspace_black_24dp) else null
|
2020-09-21 07:53:42 +00:00
|
|
|
}
|
|
|
|
|
2020-05-27 16:37:03 +00:00
|
|
|
override fun onPause() {
|
|
|
|
super.onPause()
|
2020-07-06 11:38:00 +00:00
|
|
|
Crowdin.unregisterDataLoadingObserver(loadingObserver)
|
2020-05-27 16:37:03 +00:00
|
|
|
}
|
2020-04-19 17:21:40 +00:00
|
|
|
|
2020-05-27 16:37:03 +00:00
|
|
|
override fun onResume() {
|
2020-11-05 18:26:27 +00:00
|
|
|
setFinalTheme()
|
2020-05-27 16:37:03 +00:00
|
|
|
super.onResume()
|
2020-08-06 07:46:07 +00:00
|
|
|
Crowdin.registerDataLoadingObserver(loadingObserver)
|
2020-04-05 18:07:26 +00:00
|
|
|
}
|
|
|
|
|
2020-04-19 17:21:40 +00:00
|
|
|
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
2020-08-06 07:46:07 +00:00
|
|
|
when (item.itemId) {
|
|
|
|
android.R.id.home -> {
|
2020-09-21 07:53:42 +00:00
|
|
|
onBackPressedDispatcher.onBackPressed()
|
|
|
|
return true
|
2020-04-19 17:21:40 +00:00
|
|
|
}
|
2020-08-06 07:46:07 +00:00
|
|
|
R.id.toolbar_about -> {
|
2020-09-21 07:53:42 +00:00
|
|
|
navHost.navigate(HomeFragmentDirections.toAboutFragment())
|
|
|
|
return true
|
2020-08-06 07:46:07 +00:00
|
|
|
}
|
|
|
|
R.id.toolbar_settings -> {
|
2020-09-21 07:53:42 +00:00
|
|
|
navHost.navigate(HomeFragmentDirections.toSettingsFragment())
|
|
|
|
return true
|
2020-08-06 07:46:07 +00:00
|
|
|
}
|
2020-10-31 19:45:39 +00:00
|
|
|
R.id.toolbar_update_manager -> {
|
2020-11-15 17:40:56 +00:00
|
|
|
ManagerUpdateDialog.newInstance(false).show(supportFragmentManager, "manager_update")
|
2020-10-31 19:45:39 +00:00
|
|
|
}
|
2020-08-06 07:46:07 +00:00
|
|
|
R.id.dev_settings -> {
|
2020-09-21 07:53:42 +00:00
|
|
|
navHost.navigate(SettingsFragmentDirections.toDevSettingsFragment())
|
|
|
|
return true
|
2020-08-06 07:46:07 +00:00
|
|
|
}
|
|
|
|
else -> super.onOptionsItemSelected(item)
|
2020-04-05 18:07:26 +00:00
|
|
|
}
|
2020-08-06 07:46:07 +00:00
|
|
|
|
2020-04-24 16:10:29 +00:00
|
|
|
return false
|
2020-04-19 17:21:40 +00:00
|
|
|
}
|
2020-05-14 06:27:07 +00:00
|
|
|
|
2020-07-06 11:38:00 +00:00
|
|
|
override fun attachBaseContext(newBase: Context) {
|
2020-11-03 07:28:18 +00:00
|
|
|
super.attachBaseContext(Crowdin.wrapContext(LanguageContextWrapper.wrap(newBase)))
|
2020-04-05 18:07:26 +00:00
|
|
|
}
|
2020-05-27 16:37:03 +00:00
|
|
|
|
2020-11-05 18:26:27 +00:00
|
|
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
|
|
|
super.onActivityResult(requestCode, resultCode, data)
|
|
|
|
onActivityResult(requestCode)
|
|
|
|
}
|
|
|
|
|
2020-09-29 10:47:38 +00:00
|
|
|
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()
|
|
|
|
}
|
|
|
|
|
2020-10-31 19:45:39 +00:00
|
|
|
private fun initDialogs(firstLaunch: Boolean) {
|
2020-08-26 12:29:05 +00:00
|
|
|
val prefs = getDefaultSharedPreferences(this)
|
2020-07-06 14:29:27 +00:00
|
|
|
val variant = prefs.getString("vanced_variant", "nonroot")
|
2020-10-02 18:23:19 +00:00
|
|
|
prefs.getBoolean("show_root_dialog", true)
|
2020-07-06 14:29:27 +00:00
|
|
|
|
2020-11-10 18:16:29 +00:00
|
|
|
if (intent?.data != null && intent.dataString?.startsWith("https") == true) {
|
2020-11-02 14:41:39 +00:00
|
|
|
val urldialog = URLChangeDialog()
|
|
|
|
val arg = Bundle()
|
|
|
|
arg.putString("url", intent.dataString)
|
|
|
|
urldialog.arguments = arg
|
|
|
|
urldialog.show(this)
|
|
|
|
}
|
|
|
|
|
2020-07-06 14:29:27 +00:00
|
|
|
when {
|
2020-10-31 19:45:39 +00:00
|
|
|
firstLaunch -> {
|
2020-08-06 07:46:07 +00:00
|
|
|
DialogContainer.showSecurityDialog(this)
|
|
|
|
with(FirebaseMessaging.getInstance()) {
|
|
|
|
subscribeToTopic("Vanced-Update")
|
2020-11-02 14:41:39 +00:00
|
|
|
subscribeToTopic("Music-Update")
|
2020-08-06 07:46:07 +00:00
|
|
|
subscribeToTopic("MicroG-Update")
|
|
|
|
}
|
|
|
|
}
|
2020-07-06 14:29:27 +00:00
|
|
|
!prefs.getBoolean("statement", true) -> DialogContainer.statementFalse(this)
|
|
|
|
variant == "root" -> {
|
|
|
|
if (PackageHelper.getPackageVersionName(
|
|
|
|
"com.google.android.youtube",
|
|
|
|
packageManager
|
|
|
|
) == "14.21.54")
|
|
|
|
DialogContainer.basicDialog(
|
|
|
|
getString(R.string.hold_on),
|
|
|
|
getString(R.string.magisk_vanced),
|
|
|
|
this
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-03-16 15:41:57 +00:00
|
|
|
}
|