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:
@@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -108,12 +94,6 @@ fileprivate class TextView: UITextView {
|
|||||||
selectedText = self.text(in: selectedRange) ?? ""
|
selectedText = self.text(in: selectedRange) ?? ""
|
||||||
showHighlightPost.toggle()
|
showHighlightPost.toggle()
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc public func muteText(_ sender: Any?) {
|
|
||||||
guard let selectedRange = self.selectedTextRange else { return }
|
|
||||||
selectedText = self.text(in: selectedRange) ?? ""
|
|
||||||
showMutePost.toggle()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,8 +15,6 @@ struct MutelistView: View {
|
|||||||
@State var hashtags: [MuteItem] = []
|
@State var hashtags: [MuteItem] = []
|
||||||
@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 {
|
||||||
@@ -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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user