Migrate SpoofActivity to fragment

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2023-06-22 17:09:37 +05:30
parent 891bc62247
commit 6ffde049a5
4 changed files with 53 additions and 65 deletions

View File

@@ -153,7 +153,6 @@
<activity android:name=".view.ui.details.DetailsReviewActivity" /> <activity android:name=".view.ui.details.DetailsReviewActivity" />
<activity android:name=".view.ui.downloads.DownloadActivity" /> <activity android:name=".view.ui.downloads.DownloadActivity" />
<activity android:name=".view.ui.account.GoogleActivity" /> <activity android:name=".view.ui.account.GoogleActivity" />
<activity android:name=".view.ui.spoof.SpoofActivity" />
<activity android:name=".view.ui.account.AccountActivity" /> <activity android:name=".view.ui.account.AccountActivity" />
<activity android:name=".view.ui.details.DetailsExodusActivity" /> <activity android:name=".view.ui.details.DetailsExodusActivity" />
<activity android:name=".view.ui.details.DevAppsActivity" /> <activity android:name=".view.ui.details.DevAppsActivity" />

View File

@@ -58,10 +58,9 @@ import com.aurora.store.view.ui.commons.BaseActivity
import com.aurora.store.view.ui.commons.BlacklistActivity import com.aurora.store.view.ui.commons.BlacklistActivity
import com.aurora.store.view.ui.downloads.DownloadActivity import com.aurora.store.view.ui.downloads.DownloadActivity
import com.aurora.store.view.ui.preferences.SettingsActivity import com.aurora.store.view.ui.preferences.SettingsActivity
import com.aurora.store.view.ui.sale.AppSalesFragment
import com.aurora.store.view.ui.search.SearchSuggestionActivity import com.aurora.store.view.ui.search.SearchSuggestionActivity
import com.aurora.store.view.ui.sheets.SelfUpdateSheet import com.aurora.store.view.ui.sheets.SelfUpdateSheet
import com.aurora.store.view.ui.spoof.SpoofActivity import com.aurora.store.view.ui.spoof.SpoofFragment
import com.bumptech.glide.load.resource.bitmap.RoundedCorners import com.bumptech.glide.load.resource.bitmap.RoundedCorners
import com.google.android.material.bottomnavigation.BottomNavigationView import com.google.android.material.bottomnavigation.BottomNavigationView
import nl.komponents.kovenant.task import nl.komponents.kovenant.task
@@ -257,7 +256,8 @@ class MainActivity : BaseActivity() {
open(DownloadActivity::class.java) open(DownloadActivity::class.java)
} }
R.id.menu_spoof_manager -> { R.id.menu_spoof_manager -> {
open(SpoofActivity::class.java) navController.navigate(R.id.spoofFragment)
B.drawerLayout.close()
} }
R.id.menu_account_manager -> { R.id.menu_account_manager -> {
open(AccountActivity::class.java) open(AccountActivity::class.java)

View File

@@ -22,28 +22,30 @@ package com.aurora.store.view.ui.spoof
import android.net.Uri import android.net.Uri
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.view.Menu import android.view.View
import android.view.MenuItem
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentManager
import androidx.lifecycle.Lifecycle import androidx.lifecycle.Lifecycle
import androidx.navigation.fragment.findNavController
import androidx.viewpager2.adapter.FragmentStateAdapter import androidx.viewpager2.adapter.FragmentStateAdapter
import com.aurora.extensions.toast import com.aurora.extensions.toast
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.data.providers.NativeDeviceInfoProvider import com.aurora.store.data.providers.NativeDeviceInfoProvider
import com.aurora.store.databinding.ActivityGenericPagerBinding import com.aurora.store.databinding.ActivityGenericPagerBinding
import com.aurora.store.util.PathUtil import com.aurora.store.util.PathUtil
import com.aurora.store.view.ui.commons.BaseActivity
import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayoutMediator import com.google.android.material.tabs.TabLayoutMediator
import nl.komponents.kovenant.task import nl.komponents.kovenant.task
import nl.komponents.kovenant.ui.failUi import nl.komponents.kovenant.ui.failUi
import nl.komponents.kovenant.ui.successUi import nl.komponents.kovenant.ui.successUi
class SpoofActivity : BaseActivity() { class SpoofFragment : Fragment(R.layout.activity_generic_pager) {
private lateinit var B: ActivityGenericPagerBinding private var _binding: ActivityGenericPagerBinding? = null
private val binding: ActivityGenericPagerBinding
get() = _binding!!
// Android is weird, even if export device config with proper mime type, it will refuse to open // Android is weird, even if export device config with proper mime type, it will refuse to open
// it again with same mime type // it again with same mime type
@@ -59,63 +61,40 @@ class SpoofActivity : BaseActivity() {
if (it != null) exportDeviceConfig(it) else toast(R.string.toast_export_failed) if (it != null) exportDeviceConfig(it) else toast(R.string.toast_export_failed)
} }
override fun onConnected() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = ActivityGenericPagerBinding.bind(view)
} // Toolbar
binding.layoutActionToolbar.toolbar.apply {
elevation = 0f
title = getString(R.string.title_spoof_manager)
navigationIcon = ContextCompat.getDrawable(view.context, R.drawable.ic_arrow_back)
inflateMenu(R.menu.menu_spoof)
setNavigationOnClickListener { findNavController().navigateUp() }
setOnMenuItemClickListener {
when (it.itemId) {
R.id.action_import -> {
startForDocumentImport.launch(arrayOf(importMimeType))
}
override fun onDisconnected() { R.id.action_export -> {
startForDocumentExport
} .launch("aurora_store_${Build.BRAND}_${Build.DEVICE}.properties")
}
override fun onReconnected() { }
} true
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
B = ActivityGenericPagerBinding.inflate(layoutInflater)
setContentView(B.root)
attachToolbar()
attachViewPager()
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.menu_spoof, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
android.R.id.home -> {
onBackPressedDispatcher.onBackPressed()
return true
}
R.id.action_import -> {
startForDocumentImport.launch(arrayOf(importMimeType))
}
R.id.action_export -> {
startForDocumentExport
.launch("aurora_store_${Build.BRAND}_${Build.DEVICE}.properties")
} }
} }
return super.onOptionsItemSelected(item)
}
private fun attachToolbar() { // ViewPager
setSupportActionBar(B.layoutActionToolbar.toolbar) binding.pager.adapter = ViewPagerAdapter(childFragmentManager, lifecycle)
val actionBar = supportActionBar
if (actionBar != null) {
actionBar.setDisplayShowCustomEnabled(true)
actionBar.setDisplayHomeAsUpEnabled(true)
actionBar.elevation = 0f
actionBar.title = getString(R.string.title_spoof_manager)
}
}
private fun attachViewPager() { TabLayoutMediator(
B.pager.adapter = ViewPagerAdapter(supportFragmentManager, lifecycle) binding.tabLayout,
binding.pager,
TabLayoutMediator(B.tabLayout, B.pager, true) { tab: TabLayout.Tab, position: Int -> true
) { tab: TabLayout.Tab, position: Int ->
when (position) { when (position) {
0 -> tab.text = getString(R.string.title_device) 0 -> tab.text = getString(R.string.title_device)
1 -> tab.text = getString(R.string.title_language) 1 -> tab.text = getString(R.string.title_language)
@@ -125,16 +104,21 @@ class SpoofActivity : BaseActivity() {
}.attach() }.attach()
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun importDeviceConfig(uri: Uri) { private fun importDeviceConfig(uri: Uri) {
task { task {
contentResolver.openInputStream(uri)?.use { input -> context?.contentResolver?.openInputStream(uri)?.use { input ->
PathUtil.getNewEmptySpoofConfig(this).outputStream().use { PathUtil.getNewEmptySpoofConfig(requireContext()).outputStream().use {
input.copyTo(it) input.copyTo(it)
} }
} }
} successUi { } successUi {
toast(R.string.toast_import_success) toast(R.string.toast_import_success)
recreate() activity?.recreate()
} failUi { } failUi {
it.printStackTrace() it.printStackTrace()
toast(R.string.toast_import_failed) toast(R.string.toast_import_failed)
@@ -143,9 +127,9 @@ class SpoofActivity : BaseActivity() {
private fun exportDeviceConfig(uri: Uri) { private fun exportDeviceConfig(uri: Uri) {
task { task {
NativeDeviceInfoProvider(this) NativeDeviceInfoProvider(requireContext())
.getNativeDeviceProperties() .getNativeDeviceProperties()
.store(contentResolver.openOutputStream(uri), "DEVICE_CONFIG") .store(context?.contentResolver?.openOutputStream(uri), "DEVICE_CONFIG")
} successUi { } successUi {
toast(R.string.toast_export_success) toast(R.string.toast_export_success)
} failUi { } failUi {

View File

@@ -55,4 +55,9 @@
android:name="com.aurora.store.view.ui.sale.AppSalesFragment" android:name="com.aurora.store.view.ui.sale.AppSalesFragment"
android:label="@string/title_apps_sale" android:label="@string/title_apps_sale"
tools:layout="@layout/activity_generic_recycler" /> tools:layout="@layout/activity_generic_recycler" />
<fragment
android:id="@+id/spoofFragment"
android:name="com.aurora.store.view.ui.spoof.SpoofFragment"
android:label="@string/title_spoof_manager"
tools:layout="@layout/activity_generic_pager" />
</navigation> </navigation>