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