AppPeekDialogSheet: Migrate to navigation components

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2023-08-04 18:12:41 +08:00
parent d5d77cbdc1
commit 5c8b9c6d54
3 changed files with 24 additions and 44 deletions

View File

@@ -34,7 +34,6 @@ 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.controller.CategoryCarouselController import com.aurora.store.view.epoxy.controller.CategoryCarouselController
import com.aurora.store.view.epoxy.controller.GenericCarouselController import com.aurora.store.view.epoxy.controller.GenericCarouselController
import com.aurora.store.view.ui.sheets.AppPeekDialogSheet
import com.aurora.store.viewmodel.subcategory.SubCategoryClusterViewModel import com.aurora.store.viewmodel.subcategory.SubCategoryClusterViewModel
@@ -135,6 +134,8 @@ class CategoryBrowseFragment : BaseFragment(R.layout.activity_generic_recycler),
} }
override fun onAppLongClick(app: App) { override fun onAppLongClick(app: App) {
AppPeekDialogSheet.newInstance(app).show(childFragmentManager, "APDS") findNavController().navigate(
CategoryBrowseFragmentDirections.actionCategoryBrowseFragmentToAppPeekDialogSheet(app)
)
} }
} }

View File

@@ -23,71 +23,39 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import com.aurora.Constants import androidx.navigation.fragment.navArgs
import com.aurora.gplayapi.data.models.App import com.aurora.extensions.load
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.databinding.SheetAppPeekBinding import com.aurora.store.databinding.SheetAppPeekBinding
import com.aurora.store.util.CommonUtil import com.aurora.store.util.CommonUtil
import com.aurora.extensions.load
import com.bumptech.glide.load.resource.bitmap.RoundedCorners import com.bumptech.glide.load.resource.bitmap.RoundedCorners
class AppPeekDialogSheet : BaseBottomSheet() { class AppPeekDialogSheet : BaseBottomSheet() {
lateinit var B: SheetAppPeekBinding lateinit var B: SheetAppPeekBinding
lateinit var app: App
private var rawApp = String() private val args: AppPeekDialogSheetArgs by navArgs()
companion object {
@JvmStatic
fun newInstance(app: App): AppPeekDialogSheet {
return AppPeekDialogSheet().apply {
arguments = Bundle().apply {
putString(Constants.STRING_EXTRA, gson.toJson(app))
}
}
}
}
override fun onCreateContentView( override fun onCreateContentView(
inflater: LayoutInflater, inflater: LayoutInflater,
container: ViewGroup, container: ViewGroup,
savedInstanceState: Bundle? savedInstanceState: Bundle?
): View? { ): View {
B = SheetAppPeekBinding.inflate(inflater, container, false) B = SheetAppPeekBinding.inflate(inflater, container, false)
val bundle = arguments
if (bundle != null) {
rawApp = bundle.getString(Constants.STRING_EXTRA, "")
if (rawApp.isNotEmpty()) {
app = gson.fromJson(rawApp, App::class.java)
if (app.packageName.isNotEmpty()) {
draw()
} else {
dismissAllowingStateLoss()
}
} else {
dismissAllowingStateLoss()
}
}
return B.root return B.root
} }
override fun onContentViewCreated(view: View, savedInstanceState: Bundle?) { override fun onContentViewCreated(view: View, savedInstanceState: Bundle?) {
B.txtLine1.text = args.app.displayName
} B.imgIcon.load(args.app.iconArtwork.url) {
private fun draw() {
B.txtLine1.text = app.displayName
B.imgIcon.load(app.iconArtwork.url) {
transform(RoundedCorners(25)) transform(RoundedCorners(25))
} }
B.txtLine2.text = app.developerName B.txtLine2.text = args.app.developerName
B.txtLine3.text = String.format( B.txtLine3.text = String.format(
requireContext().getString(R.string.app_list_rating), requireContext().getString(R.string.app_list_rating),
CommonUtil.addSiPrefix(app.size), CommonUtil.addSiPrefix(args.app.size),
app.labeledRating, args.app.labeledRating,
if (app.isFree) if (args.app.isFree)
"Free" "Free"
else else
"Paid" "Paid"

View File

@@ -197,6 +197,9 @@
<argument <argument
android:name="browseUrl" android:name="browseUrl"
app:argType="string" /> app:argType="string" />
<action
android:id="@+id/action_categoryBrowseFragment_to_appPeekDialogSheet"
app:destination="@id/appPeekDialogSheet" />
</fragment> </fragment>
<fragment <fragment
android:id="@+id/editorStreamBrowseFragment" android:id="@+id/editorStreamBrowseFragment"
@@ -353,4 +356,12 @@
android:name="app" android:name="app"
app:argType="com.aurora.gplayapi.data.models.App" /> app:argType="com.aurora.gplayapi.data.models.App" />
</dialog> </dialog>
<dialog
android:id="@+id/appPeekDialogSheet"
android:name="com.aurora.store.view.ui.sheets.AppPeekDialogSheet"
android:label="AppPeekDialogSheet" >
<argument
android:name="app"
app:argType="com.aurora.gplayapi.data.models.App" />
</dialog>
</navigation> </navigation>