DO NOT MERGE: Migrate DownloadActivity to fragment

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2023-06-23 22:25:00 +05:30
parent 0d7419f398
commit b01a9cacbd
11 changed files with 84 additions and 111 deletions

View File

@@ -149,7 +149,6 @@
<activity android:name=".view.ui.commons.CategoryBrowseActivity" /> <activity android:name=".view.ui.commons.CategoryBrowseActivity" />
<activity android:name=".view.ui.details.DetailsMoreActivity" /> <activity android:name=".view.ui.details.DetailsMoreActivity" />
<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.account.GoogleActivity" /> <activity android:name=".view.ui.account.GoogleActivity" />
<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

@@ -41,7 +41,6 @@ import androidx.core.graphics.ColorUtils
import androidx.core.view.GravityCompat import androidx.core.view.GravityCompat
import androidx.navigation.NavController import androidx.navigation.NavController
import androidx.navigation.NavDestination import androidx.navigation.NavDestination
import androidx.navigation.findNavController
import androidx.navigation.fragment.NavHostFragment import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.ui.setupWithNavController import androidx.navigation.ui.setupWithNavController
import com.aurora.Constants import com.aurora.Constants
@@ -55,7 +54,6 @@ import com.aurora.store.util.CertUtil.isFDroidApp
import com.aurora.store.util.Log import com.aurora.store.util.Log
import com.aurora.store.util.Preferences import com.aurora.store.util.Preferences
import com.aurora.store.view.ui.commons.BaseActivity import com.aurora.store.view.ui.commons.BaseActivity
import com.aurora.store.view.ui.downloads.DownloadActivity
import com.aurora.store.view.ui.sheets.SelfUpdateSheet import com.aurora.store.view.ui.sheets.SelfUpdateSheet
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
@@ -190,7 +188,7 @@ class MainActivity : BaseActivity() {
} }
B.viewToolbar.imgActionSecondary.setOnClickListener { B.viewToolbar.imgActionSecondary.setOnClickListener {
open(DownloadActivity::class.java) navController.navigate(R.id.downloadFragment)
} }
} }
@@ -247,7 +245,8 @@ class MainActivity : BaseActivity() {
B.drawerLayout.close() B.drawerLayout.close()
} }
R.id.menu_download_manager -> { R.id.menu_download_manager -> {
open(DownloadActivity::class.java) navController.navigate(R.id.downloadFragment)
B.drawerLayout.close()
} }
R.id.menu_spoof_manager -> { R.id.menu_spoof_manager -> {
navController.navigate(R.id.spoofFragment) navController.navigate(R.id.spoofFragment)

View File

@@ -29,10 +29,12 @@ import android.util.ArrayMap
import androidx.core.app.NotificationCompat import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat import androidx.core.app.NotificationManagerCompat
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.navigation.NavDeepLinkBuilder
import com.aurora.Constants import com.aurora.Constants
import com.aurora.extensions.getStyledAttributeColor import com.aurora.extensions.getStyledAttributeColor
import com.aurora.extensions.isMAndAbove import com.aurora.extensions.isMAndAbove
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.MainActivity
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.data.downloader.DownloadManager import com.aurora.store.data.downloader.DownloadManager
import com.aurora.store.data.downloader.RequestGroupIdBuilder import com.aurora.store.data.downloader.RequestGroupIdBuilder
@@ -45,7 +47,6 @@ import com.aurora.store.data.receiver.InstallReceiver
import com.aurora.store.util.CommonUtil import com.aurora.store.util.CommonUtil
import com.aurora.store.util.Log import com.aurora.store.util.Log
import com.aurora.store.view.ui.details.AppDetailsActivity import com.aurora.store.view.ui.details.AppDetailsActivity
import com.aurora.store.view.ui.downloads.DownloadActivity
import com.google.gson.Gson import com.google.gson.Gson
import com.google.gson.GsonBuilder import com.google.gson.GsonBuilder
import com.tonyodev.fetch2.* import com.tonyodev.fetch2.*
@@ -326,11 +327,11 @@ class NotificationService : Service() {
} }
private fun getContentIntentForDownloads(): PendingIntent { private fun getContentIntentForDownloads(): PendingIntent {
val intent = Intent(this, DownloadActivity::class.java) return NavDeepLinkBuilder(this)
val flags = if (isMAndAbove()) .setGraph(R.navigation.mobile_navigation)
PendingIntent.FLAG_CANCEL_CURRENT or PendingIntent.FLAG_IMMUTABLE .setDestination(R.id.downloadFragment)
else PendingIntent.FLAG_CANCEL_CURRENT .setComponentName(MainActivity::class.java)
return PendingIntent.getActivity(this, 0, intent, flags) .createPendingIntent()
} }
private fun getInstallIntent(packageName: String): PendingIntent { private fun getInstallIntent(packageName: String): PendingIntent {

View File

@@ -57,7 +57,6 @@ import com.aurora.store.data.service.AppMetadataStatusListener
import com.aurora.store.data.service.UpdateService import com.aurora.store.data.service.UpdateService
import com.aurora.store.databinding.ActivityDetailsBinding import com.aurora.store.databinding.ActivityDetailsBinding
import com.aurora.store.util.* import com.aurora.store.util.*
import com.aurora.store.view.ui.downloads.DownloadActivity
import com.aurora.store.view.ui.sheets.InstallErrorDialogSheet import com.aurora.store.view.ui.sheets.InstallErrorDialogSheet
import com.aurora.store.view.ui.sheets.ManualDownloadSheet import com.aurora.store.view.ui.sheets.ManualDownloadSheet
import com.bumptech.glide.load.resource.bitmap.RoundedCorners import com.bumptech.glide.load.resource.bitmap.RoundedCorners
@@ -283,10 +282,6 @@ class AppDetailsActivity : BaseDetailsActivity() {
sheet.show(supportFragmentManager, ManualDownloadSheet.TAG) sheet.show(supportFragmentManager, ManualDownloadSheet.TAG)
return true return true
} }
R.id.menu_download_manager -> {
open(DownloadActivity::class.java)
return true
}
R.id.action_playstore -> { R.id.action_playstore -> {
browse("${Constants.SHARE_URL}${app.packageName}") browse("${Constants.SHARE_URL}${app.packageName}")
return true return true

View File

@@ -20,24 +20,34 @@
package com.aurora.store.view.ui.downloads package com.aurora.store.view.ui.downloads
import android.os.Bundle import android.os.Bundle
import android.view.Menu import android.view.View
import android.view.MenuItem import androidx.core.content.ContextCompat
import androidx.navigation.fragment.findNavController
import com.aurora.Constants import com.aurora.Constants
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.data.downloader.DownloadManager import com.aurora.store.data.downloader.DownloadManager
import com.aurora.store.data.model.DownloadFile import com.aurora.store.data.model.DownloadFile
import com.aurora.store.databinding.ActivityDownloadBinding import com.aurora.store.databinding.FragmentDownloadBinding
import com.aurora.store.util.Preferences import com.aurora.store.util.Preferences
import com.aurora.store.view.epoxy.views.DownloadViewModel_ import com.aurora.store.view.epoxy.views.DownloadViewModel_
import com.aurora.store.view.epoxy.views.app.NoAppViewModel_ import com.aurora.store.view.epoxy.views.app.NoAppViewModel_
import com.aurora.store.view.ui.commons.BaseActivity import com.aurora.store.view.ui.commons.BaseFragment
import com.aurora.store.view.ui.sheets.DownloadMenuSheet import com.aurora.store.view.ui.sheets.DownloadMenuSheet
import com.tonyodev.fetch2.* import com.tonyodev.fetch2.AbstractFetchListener
import com.tonyodev.fetch2.BuildConfig
import com.tonyodev.fetch2.Download
import com.tonyodev.fetch2.Error
import com.tonyodev.fetch2.Fetch
import com.tonyodev.fetch2.FetchListener
import com.tonyodev.fetch2.Status
class DownloadActivity : BaseActivity() { class DownloadFragment : BaseFragment(R.layout.fragment_download) {
private var _binding: FragmentDownloadBinding? = null
private val binding: FragmentDownloadBinding
get() = _binding!!
private lateinit var B: ActivityDownloadBinding
private lateinit var fetch: Fetch private lateinit var fetch: Fetch
private var fetchListener: FetchListener = object : AbstractFetchListener() { private var fetchListener: FetchListener = object : AbstractFetchListener() {
@@ -86,30 +96,52 @@ class DownloadActivity : BaseActivity() {
} }
} }
override fun onConnected() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
} _binding = FragmentDownloadBinding.bind(view)
override fun onDisconnected() { // Toolbar
binding.layoutToolbarAction.toolbar.apply {
elevation = 0f
title = getString(R.string.title_download_manager)
navigationIcon = ContextCompat.getDrawable(view.context, R.drawable.ic_arrow_back)
inflateMenu(R.menu.menu_download_main)
setNavigationOnClickListener { findNavController().navigateUp() }
setOnMenuItemClickListener {
when (it.itemId) {
R.id.action_pause_all -> {
fetch.pauseAll()
}
} R.id.action_resume_all -> {
fetch.resumeAll()
}
override fun onReconnected() { R.id.action_cancel_all -> {
fetch.cancelAll()
}
} R.id.action_clear_completed -> {
fetch.removeAllWithStatus(Status.COMPLETED)
Preferences.getPrefs(view.context).edit()
.remove(Preferences.PREFERENCE_UNIQUE_GROUP_IDS).apply()
}
override fun onCreate(savedInstanceState: Bundle?) { R.id.action_force_clear_all -> {
super.onCreate(savedInstanceState) fetch.deleteAll()
Preferences.getPrefs(view.context).edit()
.remove(Preferences.PREFERENCE_UNIQUE_GROUP_IDS).apply()
}
}
true
}
}
B = ActivityDownloadBinding.inflate(layoutInflater) fetch = DownloadManager.with(view.context).fetch
setContentView(B.root)
attachToolbar()
fetch = DownloadManager.with(this).fetch
updateDownloadsList() updateDownloadsList()
B.swipeRefreshLayout.setOnRefreshListener { binding.swipeRefreshLayout.setOnRefreshListener {
updateDownloadsList() updateDownloadsList()
} }
} }
@@ -126,58 +158,10 @@ class DownloadActivity : BaseActivity() {
super.onPause() super.onPause()
} }
override fun onDestroy() { override fun onDestroyView() {
if (::fetch.isInitialized) if (::fetch.isInitialized) fetch.removeListener(fetchListener)
fetch.removeListener(fetchListener) super.onDestroyView()
super.onDestroy() _binding = null
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.menu_download_main, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
android.R.id.home -> {
onBackPressedDispatcher.onBackPressed()
return true
}
R.id.action_pause_all -> {
fetch.pauseAll()
return true
}
R.id.action_resume_all -> {
fetch.resumeAll()
return true
}
R.id.action_cancel_all -> {
fetch.cancelAll()
return true
}
R.id.action_clear_completed -> {
fetch.removeAllWithStatus(Status.COMPLETED)
Preferences.getPrefs(this).edit().remove(Preferences.PREFERENCE_UNIQUE_GROUP_IDS).apply()
return true
}
R.id.action_force_clear_all -> {
fetch.deleteAll()
Preferences.getPrefs(this).edit().remove(Preferences.PREFERENCE_UNIQUE_GROUP_IDS).apply()
return true
}
}
return super.onOptionsItemSelected(item)
}
private fun attachToolbar() {
setSupportActionBar(B.layoutToolbarAction.toolbar)
val actionBar = supportActionBar
if (actionBar != null) {
actionBar.setDisplayShowCustomEnabled(true)
actionBar.setDisplayHomeAsUpEnabled(true)
actionBar.elevation = 0f
actionBar.setTitle(R.string.title_download_manager)
}
} }
private fun updateDownloadsList() { private fun updateDownloadsList() {
@@ -193,7 +177,7 @@ class DownloadActivity : BaseActivity() {
} }
private fun updateController(downloads: List<DownloadFile>) { private fun updateController(downloads: List<DownloadFile>) {
B.recycler.withModels { binding.recycler.withModels {
if (downloads.isEmpty()) { if (downloads.isEmpty()) {
add( add(
NoAppViewModel_() NoAppViewModel_()
@@ -215,7 +199,7 @@ class DownloadActivity : BaseActivity() {
} }
} }
} }
B.swipeRefreshLayout.isRefreshing = false binding.swipeRefreshLayout.isRefreshing = false
} }
private fun openDetailsActivity(downloadFile: DownloadFile) { private fun openDetailsActivity(downloadFile: DownloadFile) {
@@ -228,9 +212,9 @@ class DownloadActivity : BaseActivity() {
private fun openDownloadMenuSheet(downloadFile: DownloadFile) { private fun openDownloadMenuSheet(downloadFile: DownloadFile) {
with(downloadFile) { with(downloadFile) {
val fragment = supportFragmentManager.findFragmentByTag(DownloadMenuSheet.TAG) val fragment = childFragmentManager.findFragmentByTag(DownloadMenuSheet.TAG)
if (fragment != null) if (fragment != null)
supportFragmentManager.beginTransaction().remove(fragment) childFragmentManager.beginTransaction().remove(fragment).commitAllowingStateLoss()
DownloadMenuSheet().apply { DownloadMenuSheet().apply {
arguments = Bundle().apply { arguments = Bundle().apply {
@@ -239,7 +223,7 @@ class DownloadActivity : BaseActivity() {
putString(DownloadMenuSheet.DOWNLOAD_URL, download.url) putString(DownloadMenuSheet.DOWNLOAD_URL, download.url)
} }
}.show( }.show(
supportFragmentManager, childFragmentManager,
DownloadMenuSheet.TAG DownloadMenuSheet.TAG
) )
} }

View File

@@ -35,8 +35,6 @@ import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs import androidx.navigation.fragment.navArgs
import com.aurora.Constants
import com.aurora.extensions.open
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.gplayapi.data.models.SearchBundle import com.aurora.gplayapi.data.models.SearchBundle
import com.aurora.store.R import com.aurora.store.R
@@ -50,7 +48,6 @@ import com.aurora.store.view.epoxy.views.app.AppListViewModel_
import com.aurora.store.view.epoxy.views.app.NoAppViewModel_ import com.aurora.store.view.epoxy.views.app.NoAppViewModel_
import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_ import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_
import com.aurora.store.view.ui.commons.BaseFragment import com.aurora.store.view.ui.commons.BaseFragment
import com.aurora.store.view.ui.downloads.DownloadActivity
import com.aurora.store.view.ui.sheets.FilterSheet import com.aurora.store.view.ui.sheets.FilterSheet
import com.aurora.store.viewmodel.search.SearchResultViewModel import com.aurora.store.viewmodel.search.SearchResultViewModel
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar
@@ -98,7 +95,7 @@ class SearchResultsFragment : BaseFragment(R.layout.fragment_search_result),
findNavController().navigateUp() findNavController().navigateUp()
} }
imgActionSecondary.setOnClickListener { imgActionSecondary.setOnClickListener {
activity?.open(DownloadActivity::class.java) findNavController().navigate(R.id.downloadFragment)
} }
} }

View File

@@ -19,7 +19,6 @@
package com.aurora.store.view.ui.search package com.aurora.store.view.ui.search
import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.text.Editable import android.text.Editable
import android.text.TextWatcher import android.text.TextWatcher
@@ -32,15 +31,12 @@ import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import com.aurora.Constants import com.aurora.Constants
import com.aurora.extensions.browse import com.aurora.extensions.browse
import com.aurora.extensions.getEmptyActivityBundle
import com.aurora.extensions.open
import com.aurora.extensions.showKeyboard import com.aurora.extensions.showKeyboard
import com.aurora.gplayapi.SearchSuggestEntry import com.aurora.gplayapi.SearchSuggestEntry
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.databinding.FragmentSearchSuggestionBinding import com.aurora.store.databinding.FragmentSearchSuggestionBinding
import com.aurora.store.util.Preferences import com.aurora.store.util.Preferences
import com.aurora.store.view.epoxy.views.SearchSuggestionViewModel_ import com.aurora.store.view.epoxy.views.SearchSuggestionViewModel_
import com.aurora.store.view.ui.downloads.DownloadActivity
import com.aurora.store.viewmodel.search.SearchSuggestionViewModel import com.aurora.store.viewmodel.search.SearchSuggestionViewModel
import com.google.android.material.textfield.TextInputEditText import com.google.android.material.textfield.TextInputEditText
@@ -69,7 +65,7 @@ class SearchSuggestionFragment : Fragment(R.layout.fragment_search_suggestion) {
findNavController().navigateUp() findNavController().navigateUp()
} }
imgActionSecondary.setOnClickListener { imgActionSecondary.setOnClickListener {
activity?.open(DownloadActivity::class.java) findNavController().navigate(R.id.downloadFragment)
} }
} }

View File

@@ -22,7 +22,8 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"> android:orientation="vertical"
tools:context=".view.ui.downloads.DownloadFragment">
<include <include
android:id="@+id/layout_toolbar_action" android:id="@+id/layout_toolbar_action"

View File

@@ -32,10 +32,6 @@
android:id="@+id/menu_download_manual" android:id="@+id/menu_download_manual"
android:title="@string/title_manual_download" /> android:title="@string/title_manual_download" />
<item
android:id="@+id/menu_download_manager"
android:title="@string/title_download_manager" />
<item <item
android:id="@+id/action_playstore" android:id="@+id/action_playstore"
android:title="@string/title_download_playstore" /> android:title="@string/title_download_playstore" />

View File

@@ -93,4 +93,9 @@
android:name="query" android:name="query"
app:argType="string" /> app:argType="string" />
</fragment> </fragment>
<fragment
android:id="@+id/downloadFragment"
android:name="com.aurora.store.view.ui.downloads.DownloadFragment"
android:label="@string/title_download_manager"
tools:layout="@layout/fragment_download" />
</navigation> </navigation>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="details_dev_email">ईमेल</string> <string name="details_dev_email">ईमेल</string>
<string name="about_bhim">भीम - यूपीआई</string> <string name="about_bhim">भीम - यूपीआई</string>
<string name="action_disable">अक्षम करें</string> <string name="action_disable">अक्षम करें</string>
@@ -190,7 +190,7 @@
<string name="pref_install_mode_title">इंस्टॉल करने का तरीका</string> <string name="pref_install_mode_title">इंस्टॉल करने का तरीका</string>
<string name="title_account_manager">खाते</string> <string name="title_account_manager">खाते</string>
<string name="title_apps_sale">ऐप छूट पर</string> <string name="title_apps_sale">ऐप छूट पर</string>
<string name="download_paused">रोके गए</string> <string name="download_paused">रोके गए <xliff:g id="completed_downloads"> %1$d </xliff:g> / <xliff:g id="all_downloads"> %2$d </xliff:g></string>
<string name="installer_status_failure_incompatible">डिवाइस पर नहीं काम करते ऐप</string> <string name="installer_status_failure_incompatible">डिवाइस पर नहीं काम करते ऐप</string>
<string name="menu_license">लाइसेंस</string> <string name="menu_license">लाइसेंस</string>
<string name="pref_install_mode_summary">एपीके इंस्टॉल का मोड चुनें</string> <string name="pref_install_mode_summary">एपीके इंस्टॉल का मोड चुनें</string>