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 9eefcaf72a429e32f325588b7e8c1509d69df5ad..a87ff9f52a52932d3825f66516302975b16bf303 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()