From c30f000490a54fd4336b6ca0982afccd4788a7dc Mon Sep 17 00:00:00 2001
From: Taras Smakula <tarassmakula@gmail.com>
Date: Wed, 26 Jul 2023 17:21:04 +0300
Subject: [PATCH] Add dismiss for menu options

---
 .../timeline/post/menu/PostMenuBottomSheet.kt | 28 ++++++++++++-------
 1 file changed, 18 insertions(+), 10 deletions(-)

diff --git a/app/src/main/java/org/futo/circles/feature/timeline/post/menu/PostMenuBottomSheet.kt b/app/src/main/java/org/futo/circles/feature/timeline/post/menu/PostMenuBottomSheet.kt
index 9eefcaf72..a87ff9f52 100644
--- a/app/src/main/java/org/futo/circles/feature/timeline/post/menu/PostMenuBottomSheet.kt
+++ b/app/src/main/java/org/futo/circles/feature/timeline/post/menu/PostMenuBottomSheet.kt
@@ -25,7 +25,8 @@ class PostMenuBottomSheet : TransparentBackgroundBottomSheetDialogFragment() {
 
     override fun onAttach(context: Context) {
         super.onAttach(context)
-        menuListener = parentFragment as? PostMenuListener
+        menuListener =
+            parentFragmentManager.fragments.firstOrNull { it is PostMenuListener } as? PostMenuListener
     }
 
 
@@ -46,52 +47,59 @@ class PostMenuBottomSheet : TransparentBackgroundBottomSheetDialogFragment() {
             with(it) {
                 tvDelete.apply {
                     setIsVisible(viewModel.canDeletePost())
-                    setOnClickListener { menuListener?.onRemove(args.roomId, args.eventId) }
+                    setOnOptionClickListener(this) { menuListener?.onRemove(args.roomId, args.eventId) }
                 }
                 tvEdit.apply {
                     setIsVisible(viewModel.canEditPost())
-                    setOnClickListener {
+                    setOnOptionClickListener(this) {
                         menuListener?.onEditPostClicked(args.roomId, args.eventId)
                     }
                 }
                 tvSaveToDevice.apply {
                     setIsVisible(viewModel.isMediaPost())
-                    setOnClickListener {
+                    setOnOptionClickListener(this) {
                         viewModel.getPostContent()?.let { menuListener?.onSaveToDevice(it) }
                     }
                 }
                 tvSaveToGallery.apply {
                     setIsVisible(viewModel.isMediaPost())
-                    setOnClickListener { menuListener?.onSaveToGallery(args.roomId, args.eventId) }
+                    setOnOptionClickListener(this) { menuListener?.onSaveToGallery(args.roomId, args.eventId) }
                 }
                 tvReport.apply {
                     setIsVisible(viewModel.isMyPost().not())
-                    setOnClickListener { menuListener?.onReport(args.roomId, args.eventId) }
+                    setOnOptionClickListener(this) { menuListener?.onReport(args.roomId, args.eventId) }
                 }
                 tvIgnore.apply {
                     setIsVisible(viewModel.isMyPost().not())
-                    setOnClickListener {
+                    setOnOptionClickListener(this) {
                         viewModel.getSenderId()?.let { menuListener?.onIgnore(it) }
                     }
                 }
                 tvEditPoll.apply {
                     setIsVisible(viewModel.canEditPoll())
-                    setOnClickListener {
+                    setOnOptionClickListener(this) {
                         menuListener?.onEditPollClicked(args.roomId, args.eventId)
                     }
                 }
                 tvEndPoll.apply {
                     setIsVisible(viewModel.canEndPoll())
-                    setOnClickListener { menuListener?.endPoll(args.roomId, args.eventId) }
+                    setOnOptionClickListener(this) { menuListener?.endPoll(args.roomId, args.eventId) }
                 }
                 tvInfo.apply {
                     setIsVisible(preferencesProvider.isDeveloperModeEnabled())
-                    setOnClickListener { menuListener?.onInfoClicked(args.roomId, args.eventId) }
+                    setOnOptionClickListener(this) { menuListener?.onInfoClicked(args.roomId, args.eventId) }
                 }
             }
         }
     }
 
+    private fun setOnOptionClickListener(view: View, lister: () -> Unit) {
+        view.setOnClickListener {
+            lister.invoke()
+            dismiss()
+        }
+    }
+
 
     override fun onDestroyView() {
         super.onDestroyView()
-- 
GitLab