@@ -2,7 +2,6 @@ package com.paypal.messages
22
33import android.annotation.SuppressLint
44import android.app.Dialog
5- import android.content.DialogInterface
65import android.content.Intent
76import android.graphics.Color
87import android.graphics.PorterDuff
@@ -49,10 +48,8 @@ import com.paypal.messages.utils.LogCat
4948import java.net.URI
5049import java.util.UUID
5150import kotlin.system.measureTimeMillis
52- import com.google.android.material.R as MaterialR
5351import com.paypal.messages.config.PayPalMessageOfferType as OfferType
5452
55-
5653@RequiresApi(Build .VERSION_CODES .M )
5754internal class ModalFragment constructor(
5855 private val clientId : String ,
@@ -76,6 +73,7 @@ internal class ModalFragment constructor(
7673 private var currentUrl: String? = null
7774 private var webView: WebView ? = null
7875 private var rootView: View ? = null
76+ private var dialog: BottomSheetDialog ? = null
7977 private var closeButtonData: ModalCloseButton ? = null
8078 private var instanceId = UUID .randomUUID()
8179
@@ -136,12 +134,12 @@ internal class ModalFragment constructor(
136134
137135 closeButton?.setOnClickListener {
138136 logEvent(TrackingEvent (eventType = EventType .MODAL_CLOSE ))
139- this .dismiss ()
137+ dialog?.hide ()
140138 }
141139
142140 // If we already have a WebView, don't reset it
143141 LogCat .debug(TAG , " Configuring WebView Settings and Handlers" )
144- val webView = rootView.findViewById<WebView >(R .id.ModalWebView )
142+ val webView = rootView.findViewById<RoundedWebView >(R .id.ModalWebView )
145143
146144 // Programmatically set bottom margin instead of in XML since we also apply it to the
147145 // dialog behavior below to control it in a single location. The expanded offset below shifts
@@ -250,23 +248,24 @@ internal class ModalFragment constructor(
250248 }
251249
252250 override fun onCreateDialog (savedInstanceState : Bundle ? ): Dialog {
253- val dialog = super .onCreateDialog(savedInstanceState) as BottomSheetDialog
254- dialog.window?.setBackgroundDrawableResource(android.R .color.transparent)
255- dialog.behavior.isFitToContents = false
256- dialog.behavior.expandedOffset = offsetTop
257- dialog.behavior.isHideable = false
258- dialog.behavior.isDraggable = false
259- dialog.behavior.state = BottomSheetBehavior .STATE_EXPANDED
260- dialog.setOnShowListener { setupBottomSheet(it) }
251+ setStyle(STYLE_NO_FRAME , R .style.BottomSheetDialog )
252+
253+ val dialog = (super .onCreateDialog(savedInstanceState) as BottomSheetDialog ).apply {
254+ window?.setBackgroundDrawableResource(android.R .color.transparent)
255+ behavior.isFitToContents = false
256+ behavior.expandedOffset = offsetTop
257+ behavior.isHideable = true
258+ behavior.isDraggable = true
259+ behavior.state = BottomSheetBehavior .STATE_EXPANDED
260+ }
261+
262+ this .dialog = dialog
261263
262264 return dialog
263265 }
264266
265- private fun setupBottomSheet (dialogInterface : DialogInterface ) {
266- val bottomSheetDialog = dialogInterface as BottomSheetDialog
267- val bottomSheet = bottomSheetDialog.findViewById<View >(MaterialR .id.design_bottom_sheet)
268- if (bottomSheet == = null ) return
269- bottomSheet.setBackgroundColor(Color .TRANSPARENT )
267+ fun expand () {
268+ this .dialog?.show()
270269 }
271270
272271 fun init (config : ModalConfig ) {
0 commit comments