package com.base.datarecovery.view

import android.content.Context
import android.view.LayoutInflater
import android.view.View
import com.base.datarecovery.activity.MainActivity
import com.base.datarecovery.databinding.DialogPermissionBottomsheetBinding
import com.base.datarecovery.help.ActivityLauncher
import com.base.datarecovery.help.PermissionHelp.requestStorePermission
import com.base.datarecovery.utils.LogEx
import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog

object PermissionDialog {
    private val TAG = "PermissionDialog"
    fun Context.showPermissionBottomSheet(launcher: ActivityLauncher, dismissAction: () -> Unit): BottomSheetDialog {
        val dialog = BottomSheetDialog(this)
        val binding = DialogPermissionBottomsheetBinding.inflate(LayoutInflater.from(this))
        dialog.setContentView(binding.root)
//        dialog.setCanceledOnTouchOutside(false)
//        dialog.setCancelable(false)
        dialog.show()

        val parentView = binding.root.parent as View
        BottomSheetBehavior.from(parentView).state = BottomSheetBehavior.STATE_EXPANDED

        binding.tvOpen.setOnClickListener {
            requestStorePermission(launcher, result = {
                if (it) {
                    dialog.dismiss()
                    LogEx.logDebug(TAG, "dismissAction 1")
                }
            })
        }
        dialog.setOnDismissListener {
            LogEx.logDebug(TAG, "dismissAction 2")
            dismissAction.invoke()
        }
        return dialog

    }

}