VancedManager/app/src/main/java/com/vanced/manager/ui/fragments/HomeFragment.kt

163 lines
7.2 KiB
Kotlin
Raw Normal View History

package com.vanced.manager.ui.fragments
2020-03-18 18:10:54 +00:00
2020-05-10 13:07:00 +00:00
import android.animation.ObjectAnimator
2020-03-18 18:10:54 +00:00
import android.os.Bundle
import android.view.*
2020-05-23 17:17:27 +00:00
import android.widget.TextView
2020-05-10 14:01:38 +00:00
import androidx.core.animation.addListener
import androidx.viewpager2.widget.ViewPager2
2020-05-20 14:33:53 +00:00
import com.dezlum.codelabs.getjson.GetJson
2020-05-24 15:06:20 +00:00
import com.github.pwittchen.reactivenetwork.library.rx2.ReactiveNetwork
2020-05-25 11:29:07 +00:00
import com.google.android.material.button.MaterialButton
2020-04-22 09:41:18 +00:00
import com.google.android.material.card.MaterialCardView
import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayoutMediator
import com.vanced.manager.R
import com.vanced.manager.adapter.SectionPageAdapter
import com.vanced.manager.core.fragments.Home
2020-05-24 15:06:20 +00:00
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers
2020-03-18 18:10:54 +00:00
class HomeFragment : Home() {
2020-03-18 18:10:54 +00:00
private lateinit var sectionPageAdapter: SectionPageAdapter
private lateinit var viewPager: ViewPager2
2020-05-24 15:06:20 +00:00
private var disposable: Disposable? = null
2020-03-18 18:10:54 +00:00
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
2020-04-22 09:41:18 +00:00
activity?.title = getString(R.string.title_home)
setHasOptionsMenu(true)
2020-04-22 18:00:00 +00:00
return inflater.inflate(R.layout.fragment_home, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
2020-04-22 18:00:00 +00:00
super.onViewCreated(view, savedInstanceState)
2020-05-24 19:21:12 +00:00
initNetworkFun()
2020-05-24 15:06:20 +00:00
sectionPageAdapter = SectionPageAdapter(this)
val tabLayout = view.findViewById(R.id.tablayout) as TabLayout
viewPager = view.findViewById(R.id.viewpager)
viewPager.adapter = sectionPageAdapter
TabLayoutMediator(tabLayout, viewPager) { tab, position ->
when (position) {
0 -> tab.text = "Vanced"
1 -> tab.text = "MicroG"
2020-05-22 14:28:24 +00:00
2 -> tab.text = "Manager"
}
}.attach()
2020-03-18 18:10:54 +00:00
}
2020-05-24 19:21:12 +00:00
private fun initNetworkFun() {
2020-05-24 18:57:11 +00:00
val pm = activity?.packageManager
val microgStatus = pm?.let { isPackageInstalled("com.mgoogle.android.gms", it) }
val vancedStatus = pm?.let { isPackageInstalled("com.vanced.android.youtube", it) }
2020-05-25 11:29:07 +00:00
val microginstallbtn = view?.findViewById<MaterialButton>(R.id.microg_installbtn)
val vancedinstallbtn = view?.findViewById<MaterialButton>(R.id.vanced_installbtn)
2020-05-24 18:57:11 +00:00
val vancedLatestTxt = view?.findViewById<TextView>(R.id.vanced_latest_version)
val microgLatestTxt = view?.findViewById<TextView>(R.id.microg_latest_version)
2020-05-24 15:15:17 +00:00
val networkErrorLayout = view?.findViewById<MaterialCardView>(R.id.home_network_wrapper)
2020-05-24 18:57:11 +00:00
2020-05-24 15:06:20 +00:00
disposable = ReactiveNetwork.observeInternetConnectivity()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe { isConnectedToInternet ->
2020-05-24 15:25:11 +00:00
run {
if (isConnectedToInternet) {
2020-05-24 16:08:10 +00:00
vancedinstallbtn?.visibility = View.VISIBLE
microginstallbtn?.visibility = View.VISIBLE
2020-05-24 18:57:11 +00:00
val vancedRemoteVer: String =
GetJson().AsJSONObject("https://x1nto.github.io/VancedFiles/vanced.json")
.get("version").asString
val microgRemoteVer: String =
GetJson().AsJSONObject("https://x1nto.github.io/VancedFiles/microg.json")
.get("version").asString
vancedLatestTxt?.text = vancedRemoteVer
microgLatestTxt?.text = microgRemoteVer
2020-05-26 13:21:30 +00:00
if (microgStatus!!) {
val microgVer =
pm.getPackageInfo("com.mgoogle.android.gms", 0).versionName
when {
microgRemoteVer > microgVer -> {
microginstallbtn?.text = activity?.getString(R.string.update)
microginstallbtn?.icon =
activity?.getDrawable(R.drawable.ic_cloud_upload_black_24dp)
}
microgRemoteVer == microgVer -> {
microginstallbtn?.text =
activity?.getString(R.string.button_installed)
microginstallbtn?.icon =
activity?.getDrawable(R.drawable.outline_cloud_done_24)
2020-05-24 18:57:11 +00:00
}
}
2020-05-26 13:21:30 +00:00
}
if (vancedStatus!!) {
val vancedVer =
pm.getPackageInfo("com.vanced.android.youtube", 0).versionName
when {
vancedRemoteVer > vancedVer -> {
vancedinstallbtn?.text = activity?.getString(R.string.update)
vancedinstallbtn?.icon =
activity?.getDrawable(R.drawable.ic_cloud_upload_black_24dp)
}
vancedRemoteVer == vancedVer -> {
vancedinstallbtn?.text =
activity?.getString(R.string.button_installed)
vancedinstallbtn?.icon =
activity?.getDrawable(R.drawable.outline_cloud_done_24)
2020-05-24 18:57:11 +00:00
}
}
}
2020-05-24 16:08:10 +00:00
2020-05-24 15:25:11 +00:00
val oa2 = ObjectAnimator.ofFloat(networkErrorLayout, "yFraction", 0f, 0.3f)
val oa3 = ObjectAnimator.ofFloat(networkErrorLayout, "yFraction", 0.3f, -1f)
oa2.start()
oa3.apply {
oa3.addListener(onEnd = {
networkErrorLayout?.visibility = View.GONE
})
start()
}
} else {
2020-05-24 16:08:10 +00:00
vancedinstallbtn?.visibility = View.INVISIBLE
microginstallbtn?.visibility = View.INVISIBLE
vancedLatestTxt?.text = getString(R.string.unavailable)
microgLatestTxt?.text = getString(R.string.unavailable)
2020-05-24 15:25:11 +00:00
val oa2 = ObjectAnimator.ofFloat(networkErrorLayout, "yFraction", -1f, 0.3f)
val oa3 = ObjectAnimator.ofFloat(networkErrorLayout, "yFraction", 0.3f, 0f)
oa2.apply {
oa2.addListener(onStart = {
networkErrorLayout?.visibility = View.VISIBLE
})
start()
}
oa3.start()
2020-05-24 15:06:20 +00:00
}
2020-05-24 15:25:11 +00:00
2020-05-24 15:15:17 +00:00
2020-05-24 15:06:20 +00:00
}
}
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.toolbar_menu, menu)
2020-04-22 09:41:18 +00:00
super .onCreateOptionsMenu(menu, inflater)
}
2020-03-18 18:10:54 +00:00
}