Migrate DevAppsActivity to fragment
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -98,7 +98,6 @@
|
|||||||
<activity android:name=".view.ui.details.DetailsReviewActivity" />
|
<activity android:name=".view.ui.details.DetailsReviewActivity" />
|
||||||
<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" />
|
|
||||||
|
|
||||||
<service android:name=".data.service.NotificationService" />
|
<service android:name=".data.service.NotificationService" />
|
||||||
<service android:name=".data.installer.InstallerService" />
|
<service android:name=".data.installer.InstallerService" />
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ import com.aurora.Constants
|
|||||||
import com.aurora.gplayapi.data.models.App
|
import com.aurora.gplayapi.data.models.App
|
||||||
import com.aurora.store.data.model.Report
|
import com.aurora.store.data.model.Report
|
||||||
import com.aurora.store.view.ui.details.DetailsExodusActivity
|
import com.aurora.store.view.ui.details.DetailsExodusActivity
|
||||||
import com.aurora.store.view.ui.details.DevAppsActivity
|
|
||||||
import com.google.gson.Gson
|
import com.google.gson.Gson
|
||||||
import com.google.gson.GsonBuilder
|
import com.google.gson.GsonBuilder
|
||||||
import java.lang.reflect.Modifier
|
import java.lang.reflect.Modifier
|
||||||
@@ -35,17 +34,6 @@ import java.lang.reflect.Modifier
|
|||||||
object NavigationUtil {
|
object NavigationUtil {
|
||||||
val gson: Gson = GsonBuilder().excludeFieldsWithModifiers(Modifier.TRANSIENT).create()
|
val gson: Gson = GsonBuilder().excludeFieldsWithModifiers(Modifier.TRANSIENT).create()
|
||||||
|
|
||||||
fun openDevAppsActivity(context: Context, app: App) {
|
|
||||||
val intent = Intent(
|
|
||||||
context,
|
|
||||||
DevAppsActivity::class.java
|
|
||||||
).apply {
|
|
||||||
putExtra(Constants.STRING_APP, gson.toJson(app))
|
|
||||||
}
|
|
||||||
val options = ActivityOptions.makeSceneTransitionAnimation(context as AppCompatActivity)
|
|
||||||
context.startActivity(intent, options.toBundle())
|
|
||||||
}
|
|
||||||
|
|
||||||
fun openExodusActivity(context: Context, app: App, report: Report) {
|
fun openExodusActivity(context: Context, app: App, report: Report) {
|
||||||
val intent = Intent(
|
val intent = Intent(
|
||||||
context,
|
context,
|
||||||
|
|||||||
@@ -460,9 +460,9 @@ class AppDetailsFragment : BaseFragment(R.layout.fragment_details) {
|
|||||||
txtLine1.text = app.displayName
|
txtLine1.text = app.displayName
|
||||||
txtLine2.text = app.developerName
|
txtLine2.text = app.developerName
|
||||||
txtLine2.setOnClickListener {
|
txtLine2.setOnClickListener {
|
||||||
NavigationUtil.openDevAppsActivity(
|
findNavController().navigate(
|
||||||
requireContext(),
|
AppDetailsFragmentDirections
|
||||||
app
|
.actionAppDetailsFragmentToDevAppsFragment(app.developerName)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
txtLine3.text = ("${app.versionName} (${app.versionCode})")
|
txtLine3.text = ("${app.versionName} (${app.versionCode})")
|
||||||
|
|||||||
@@ -19,89 +19,67 @@
|
|||||||
|
|
||||||
package com.aurora.store.view.ui.details
|
package com.aurora.store.view.ui.details
|
||||||
|
|
||||||
import android.content.Intent
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import com.aurora.Constants
|
import androidx.navigation.fragment.findNavController
|
||||||
import com.aurora.gplayapi.data.models.App
|
import androidx.navigation.fragment.navArgs
|
||||||
import com.aurora.gplayapi.data.models.SearchBundle
|
import com.aurora.gplayapi.data.models.SearchBundle
|
||||||
|
import com.aurora.store.R
|
||||||
import com.aurora.store.databinding.ActivityGenericRecyclerBinding
|
import com.aurora.store.databinding.ActivityGenericRecyclerBinding
|
||||||
import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
|
import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
|
||||||
import com.aurora.store.view.epoxy.views.app.AppListViewModel_
|
|
||||||
import com.aurora.store.view.epoxy.views.AppProgressViewModel_
|
import com.aurora.store.view.epoxy.views.AppProgressViewModel_
|
||||||
import com.aurora.store.view.ui.commons.BaseActivity
|
import com.aurora.store.view.epoxy.views.app.AppListViewModel_
|
||||||
|
import com.aurora.store.view.ui.commons.BaseFragment
|
||||||
import com.aurora.store.viewmodel.search.SearchResultViewModel
|
import com.aurora.store.viewmodel.search.SearchResultViewModel
|
||||||
|
|
||||||
class DevAppsActivity : BaseActivity() {
|
class DevAppsFragment : BaseFragment(R.layout.activity_generic_recycler) {
|
||||||
|
|
||||||
|
private var _binding: ActivityGenericRecyclerBinding? = null
|
||||||
|
private val binding: ActivityGenericRecyclerBinding
|
||||||
|
get() = _binding!!
|
||||||
|
|
||||||
|
private val args: DevAppsFragmentArgs by navArgs()
|
||||||
|
|
||||||
private lateinit var B: ActivityGenericRecyclerBinding
|
|
||||||
private lateinit var VM: SearchResultViewModel
|
private lateinit var VM: SearchResultViewModel
|
||||||
|
|
||||||
private lateinit var endlessRecyclerOnScrollListener: EndlessRecyclerOnScrollListener
|
private lateinit var endlessRecyclerOnScrollListener: EndlessRecyclerOnScrollListener
|
||||||
private lateinit var app: App
|
|
||||||
|
|
||||||
var searchBundle: SearchBundle = SearchBundle()
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
|
super.onViewCreated(view, savedInstanceState)
|
||||||
override fun onConnected() {
|
_binding = ActivityGenericRecyclerBinding.bind(view)
|
||||||
hideNetworkConnectivitySheet()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onDisconnected() {
|
|
||||||
showNetworkConnectivitySheet()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onReconnected() {
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
|
||||||
super.onCreate(savedInstanceState)
|
|
||||||
|
|
||||||
B = ActivityGenericRecyclerBinding.inflate(layoutInflater)
|
|
||||||
VM = ViewModelProvider(this)[SearchResultViewModel::class.java]
|
VM = ViewModelProvider(this)[SearchResultViewModel::class.java]
|
||||||
|
|
||||||
setContentView(B.root)
|
VM.liveData.observe(viewLifecycleOwner) {
|
||||||
|
updateController(it)
|
||||||
VM.liveData.observe(this) {
|
|
||||||
searchBundle = it
|
|
||||||
updateController(searchBundle)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
attachRecycler()
|
// Toolbar
|
||||||
|
binding.layoutToolbarAction.apply {
|
||||||
onNewIntent(intent)
|
txtTitle.text = args.developerName
|
||||||
}
|
toolbar.setOnClickListener {
|
||||||
|
findNavController().navigateUp()
|
||||||
override fun onNewIntent(intent: Intent?) {
|
|
||||||
super.onNewIntent(intent)
|
|
||||||
intent?.let {
|
|
||||||
val rawApp: String? = intent.getStringExtra(Constants.STRING_APP)
|
|
||||||
app = gson.fromJson(rawApp, App::class.java)
|
|
||||||
app.let {
|
|
||||||
attachToolbar()
|
|
||||||
VM.observeSearchResults("pub:${app.developerName}")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private fun attachToolbar() {
|
// Recycler View
|
||||||
B.layoutToolbarAction.toolbar.setOnClickListener {
|
|
||||||
finishAfterTransition()
|
|
||||||
}
|
|
||||||
B.layoutToolbarAction.txtTitle.text = app.developerName
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun attachRecycler() {
|
|
||||||
endlessRecyclerOnScrollListener = object : EndlessRecyclerOnScrollListener() {
|
endlessRecyclerOnScrollListener = object : EndlessRecyclerOnScrollListener() {
|
||||||
override fun onLoadMore(currentPage: Int) {
|
override fun onLoadMore(currentPage: Int) {
|
||||||
VM.next(searchBundle.subBundles)
|
VM.liveData.value?.let { VM.next(it.subBundles) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
B.recycler.addOnScrollListener(endlessRecyclerOnScrollListener)
|
binding.recycler.addOnScrollListener(endlessRecyclerOnScrollListener)
|
||||||
|
|
||||||
|
VM.observeSearchResults("pub:${args.developerName}")
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onDestroyView() {
|
||||||
|
super.onDestroyView()
|
||||||
|
_binding = null
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateController(searchBundle: SearchBundle) {
|
private fun updateController(searchBundle: SearchBundle) {
|
||||||
B.recycler
|
binding.recycler
|
||||||
.withModels {
|
.withModels {
|
||||||
setFilterDuplicates(true)
|
setFilterDuplicates(true)
|
||||||
searchBundle.appList.forEach { app ->
|
searchBundle.appList.forEach { app ->
|
||||||
@@ -108,6 +108,9 @@
|
|||||||
<deepLink
|
<deepLink
|
||||||
app:action="android.intent.action.VIEW"
|
app:action="android.intent.action.VIEW"
|
||||||
app:uri="play.google.com/store/apps/details?id={packageName}" />
|
app:uri="play.google.com/store/apps/details?id={packageName}" />
|
||||||
|
<action
|
||||||
|
android:id="@+id/action_appDetailsFragment_to_devAppsFragment"
|
||||||
|
app:destination="@id/devAppsFragment" />
|
||||||
</fragment>
|
</fragment>
|
||||||
<fragment
|
<fragment
|
||||||
android:id="@+id/categoryBrowseFragment"
|
android:id="@+id/categoryBrowseFragment"
|
||||||
@@ -179,6 +182,14 @@
|
|||||||
android:name="title"
|
android:name="title"
|
||||||
app:argType="string" />
|
app:argType="string" />
|
||||||
</fragment>
|
</fragment>
|
||||||
|
<fragment
|
||||||
|
android:id="@+id/devAppsFragment"
|
||||||
|
android:name="com.aurora.store.view.ui.details.DevAppsFragment"
|
||||||
|
tools:layout="@layout/activity_generic_recycler" >
|
||||||
|
<argument
|
||||||
|
android:name="developerName"
|
||||||
|
app:argType="string" />
|
||||||
|
</fragment>
|
||||||
<action
|
<action
|
||||||
android:id="@+id/action_global_appDetailsFragment"
|
android:id="@+id/action_global_appDetailsFragment"
|
||||||
app:destination="@id/appDetailsFragment" />
|
app:destination="@id/appDetailsFragment" />
|
||||||
|
|||||||
Reference in New Issue
Block a user