Revert "ux: Mute selected text"

I had to revert this for now because it conflicts too heavily
with the highlighter feature which we definitely want in master.

Let's rework this using Daniel's refactor

This reverts commit d663155941.
This commit is contained in:
William Casarin
2024-09-01 07:20:41 -07:00
parent dcafcd9184
commit b01243b101
3 changed files with 12 additions and 32 deletions

View File

@@ -14,7 +14,6 @@ struct SelectableText: View {
let attributedString: AttributedString let attributedString: AttributedString
let textAlignment: NSTextAlignment let textAlignment: NSTextAlignment
@State private var showHighlightPost = false @State private var showHighlightPost = false
@State private var showMutePost = false
@State private var selectedText = "" @State private var selectedText = ""
@State private var selectedTextHeight: CGFloat = .zero @State private var selectedTextHeight: CGFloat = .zero
@State private var selectedTextWidth: CGFloat = .zero @State private var selectedTextWidth: CGFloat = .zero
@@ -39,7 +38,6 @@ struct SelectableText: View {
textAlignment: self.textAlignment, textAlignment: self.textAlignment,
enableHighlighting: self.enableHighlighting(), enableHighlighting: self.enableHighlighting(),
showHighlightPost: $showHighlightPost, showHighlightPost: $showHighlightPost,
showMutePost: $showMutePost,
selectedText: $selectedText, selectedText: $selectedText,
height: $selectedTextHeight height: $selectedTextHeight
) )
@@ -62,11 +60,6 @@ struct SelectableText: View {
.presentationDetents([.height(selectedTextHeight + 150), .medium, .large]) .presentationDetents([.height(selectedTextHeight + 150), .medium, .large])
} }
} }
.sheet(isPresented: $showMutePost) {
AddMuteItemView(state: damus_state, new_text: $selectedText)
.presentationDragIndicator(.visible)
.presentationDetents([.height(300), .medium, .large])
}
.frame(height: selectedTextHeight) .frame(height: selectedTextHeight)
} }
@@ -77,12 +70,10 @@ struct SelectableText: View {
fileprivate class TextView: UITextView { fileprivate class TextView: UITextView {
@Binding var showHighlightPost: Bool @Binding var showHighlightPost: Bool
@Binding var showMutePost: Bool
@Binding var selectedText: String @Binding var selectedText: String
init(frame: CGRect, textContainer: NSTextContainer?, showHighlightPost: Binding<Bool>, showMutePost: Binding<Bool>, selectedText: Binding<String>) { init(frame: CGRect, textContainer: NSTextContainer?, showHighlightPost: Binding<Bool>, selectedText: Binding<String>) {
self._showHighlightPost = showHighlightPost self._showHighlightPost = showHighlightPost
self._showMutePost = showMutePost
self._selectedText = selectedText self._selectedText = selectedText
super.init(frame: frame, textContainer: textContainer) super.init(frame: frame, textContainer: textContainer)
} }
@@ -95,11 +86,6 @@ fileprivate class TextView: UITextView {
if action == #selector(highlightText(_:)) { if action == #selector(highlightText(_:)) {
return true return true
} }
if action == #selector(muteText(_:)) {
return true
}
return super.canPerformAction(action, withSender: sender) return super.canPerformAction(action, withSender: sender)
} }
@@ -109,12 +95,6 @@ fileprivate class TextView: UITextView {
showHighlightPost.toggle() showHighlightPost.toggle()
} }
@objc public func muteText(_ sender: Any?) {
guard let selectedRange = self.selectedTextRange else { return }
selectedText = self.text(in: selectedRange) ?? ""
showMutePost.toggle()
}
} }
fileprivate struct TextViewRepresentable: UIViewRepresentable { fileprivate struct TextViewRepresentable: UIViewRepresentable {
@@ -126,12 +106,11 @@ fileprivate class TextView: UITextView {
let textAlignment: NSTextAlignment let textAlignment: NSTextAlignment
let enableHighlighting: Bool let enableHighlighting: Bool
@Binding var showHighlightPost: Bool @Binding var showHighlightPost: Bool
@Binding var showMutePost: Bool
@Binding var selectedText: String @Binding var selectedText: String
@Binding var height: CGFloat @Binding var height: CGFloat
func makeUIView(context: UIViewRepresentableContext<Self>) -> TextView { func makeUIView(context: UIViewRepresentableContext<Self>) -> TextView {
let view = TextView(frame: .zero, textContainer: nil, showHighlightPost: $showHighlightPost, showMutePost: $showMutePost, selectedText: $selectedText) let view = TextView(frame: .zero, textContainer: nil, showHighlightPost: $showHighlightPost, selectedText: $selectedText)
view.isEditable = false view.isEditable = false
view.dataDetectorTypes = .all view.dataDetectorTypes = .all
view.isSelectable = true view.isSelectable = true
@@ -144,8 +123,7 @@ fileprivate class TextView: UITextView {
let menuController = UIMenuController.shared let menuController = UIMenuController.shared
let highlightItem = UIMenuItem(title: "Highlight", action: #selector(view.highlightText(_:))) let highlightItem = UIMenuItem(title: "Highlight", action: #selector(view.highlightText(_:)))
let muteItem = UIMenuItem(title: "Mute", action: #selector(view.muteText(_:))) menuController.menuItems = self.enableHighlighting ? [highlightItem] : []
menuController.menuItems = self.enableHighlighting ? [highlightItem, muteItem] : []
return view return view
} }

View File

@@ -8,7 +8,7 @@ import SwiftUI
struct AddMuteItemView: View { struct AddMuteItemView: View {
let state: DamusState let state: DamusState
@Binding var new_text: String @State var new_text: String = ""
@State var expiration: DamusDuration = .indefinite @State var expiration: DamusDuration = .indefinite
@Environment(\.dismiss) var dismiss @Environment(\.dismiss) var dismiss
@@ -108,6 +108,6 @@ struct AddMuteItemView: View {
struct AddMuteItemView_Previews: PreviewProvider { struct AddMuteItemView_Previews: PreviewProvider {
static var previews: some View { static var previews: some View {
AddMuteItemView(state: test_damus_state, new_text: .constant("")) AddMuteItemView(state: test_damus_state)
} }
} }

View File

@@ -16,8 +16,6 @@ struct MutelistView: View {
@State var threads: [MuteItem] = [] @State var threads: [MuteItem] = []
@State var words: [MuteItem] = [] @State var words: [MuteItem] = []
@State var new_text: String = ""
func RemoveAction(item: MuteItem) -> some View { func RemoveAction(item: MuteItem) -> some View {
Button { Button {
guard let mutelist = damus_state.mutelist_manager.event, guard let mutelist = damus_state.mutelist_manager.event,
@@ -122,9 +120,13 @@ struct MutelistView: View {
} }
} }
.sheet(isPresented: $show_add_muteitem, onDismiss: { self.show_add_muteitem = false }) { .sheet(isPresented: $show_add_muteitem, onDismiss: { self.show_add_muteitem = false }) {
AddMuteItemView(state: damus_state, new_text: $new_text) if #available(iOS 16.0, *) {
.presentationDetents([.height(300)]) AddMuteItemView(state: damus_state)
.presentationDragIndicator(.visible) .presentationDetents([.height(300)])
.presentationDragIndicator(.visible)
} else {
AddMuteItemView(state: damus_state)
}
} }
} }
} }