2020-07-26 09:59:27 +00:00
|
|
|
/*
|
|
|
|
* SPDX-FileCopyrightText: 2020, microG Project Team
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
*/
|
|
|
|
|
|
|
|
package org.microg.gms.ui
|
|
|
|
|
|
|
|
import android.os.Bundle
|
|
|
|
import android.view.*
|
|
|
|
import androidx.fragment.app.Fragment
|
2020-09-02 19:41:15 +00:00
|
|
|
import androidx.lifecycle.lifecycleScope
|
2020-07-26 09:59:27 +00:00
|
|
|
import androidx.navigation.fragment.findNavController
|
|
|
|
import com.google.android.gms.R
|
|
|
|
import com.google.android.gms.databinding.SafetyNetFragmentBinding
|
2020-09-02 19:41:15 +00:00
|
|
|
import org.microg.gms.checkin.getCheckinServiceInfo
|
2021-05-05 21:29:02 +00:00
|
|
|
import org.microg.gms.safetynet.ServiceInfo
|
|
|
|
import org.microg.gms.safetynet.getSafetyNetServiceInfo
|
|
|
|
import org.microg.gms.safetynet.setSafetyNetServiceConfiguration
|
2020-07-26 09:59:27 +00:00
|
|
|
|
|
|
|
class SafetyNetFragment : Fragment(R.layout.safety_net_fragment) {
|
|
|
|
|
|
|
|
private lateinit var binding: SafetyNetFragmentBinding
|
|
|
|
|
|
|
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
|
|
|
binding = SafetyNetFragmentBinding.inflate(inflater, container, false)
|
|
|
|
binding.switchBarCallback = object : PreferenceSwitchBarCallback {
|
|
|
|
override fun onChecked(newStatus: Boolean) {
|
2020-09-02 19:41:15 +00:00
|
|
|
setEnabled(newStatus)
|
2020-07-26 09:59:27 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
return binding.root
|
|
|
|
}
|
|
|
|
|
2020-09-02 19:41:15 +00:00
|
|
|
fun setEnabled(newStatus: Boolean) {
|
2021-10-13 17:44:01 +00:00
|
|
|
val appContext = requireContext().applicationContext
|
2020-09-02 19:41:15 +00:00
|
|
|
lifecycleScope.launchWhenResumed {
|
2021-10-13 17:44:01 +00:00
|
|
|
val info = getSafetyNetServiceInfo(appContext)
|
2020-09-02 19:41:15 +00:00
|
|
|
val newConfiguration = info.configuration.copy(enabled = newStatus)
|
2021-10-13 17:44:01 +00:00
|
|
|
displayServiceInfo(setSafetyNetServiceConfiguration(appContext, newConfiguration))
|
2020-09-02 19:41:15 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
fun displayServiceInfo(serviceInfo: ServiceInfo) {
|
|
|
|
binding.safetynetEnabled = serviceInfo.configuration.enabled
|
|
|
|
}
|
|
|
|
|
2020-07-26 09:59:27 +00:00
|
|
|
override fun onResume() {
|
|
|
|
super.onResume()
|
2021-10-13 17:44:01 +00:00
|
|
|
val appContext = requireContext().applicationContext
|
2020-09-02 19:41:15 +00:00
|
|
|
lifecycleScope.launchWhenResumed {
|
2021-10-13 17:44:01 +00:00
|
|
|
binding.checkinEnabled = getCheckinServiceInfo(appContext).configuration.enabled
|
|
|
|
displayServiceInfo(getSafetyNetServiceInfo(appContext))
|
2020-09-02 19:41:15 +00:00
|
|
|
}
|
2020-07-26 09:59:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
|
|
|
super.onActivityCreated(savedInstanceState)
|
|
|
|
setHasOptionsMenu(true)
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
|
|
|
menu.add(0, MENU_ADVANCED, 0, R.string.menu_advanced)
|
|
|
|
super.onCreateOptionsMenu(menu, inflater)
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
|
|
|
return when (item.itemId) {
|
|
|
|
MENU_ADVANCED -> {
|
2020-08-05 13:48:51 +00:00
|
|
|
findNavController().navigate(requireContext(), R.id.openSafetyNetAdvancedSettings)
|
2020-07-26 09:59:27 +00:00
|
|
|
true
|
|
|
|
}
|
|
|
|
else -> super.onOptionsItemSelected(item)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
companion object {
|
|
|
|
private const val MENU_ADVANCED = Menu.FIRST
|
|
|
|
}
|
|
|
|
}
|