mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 16:10:20 +00:00
Redaction reason (#6098)
This commit is contained in:
@@ -91,6 +91,6 @@ enum TimelineMediaPreviewViewAction {
|
||||
case updateCurrentItem(TimelineMediaPreviewItem)
|
||||
case showItemDetails(TimelineMediaPreviewItem.Media)
|
||||
case menuAction(TimelineItemMenuAction, item: TimelineMediaPreviewItem.Media)
|
||||
case redactConfirmation(item: TimelineMediaPreviewItem.Media)
|
||||
case redactConfirmation(item: TimelineMediaPreviewItem.Media, reason: String)
|
||||
case timelineEndReached
|
||||
}
|
||||
|
||||
@@ -128,8 +128,8 @@ class TimelineMediaPreviewViewModel: TimelineMediaPreviewViewModelType {
|
||||
default:
|
||||
MXLog.error("Received unexpected action: \(action)")
|
||||
}
|
||||
case .redactConfirmation(let item):
|
||||
redactItem(item)
|
||||
case .redactConfirmation(let item, let reason):
|
||||
redactItem(item, reason: reason)
|
||||
case .timelineEndReached:
|
||||
showTimelineEndIndicator()
|
||||
}
|
||||
@@ -267,8 +267,8 @@ class TimelineMediaPreviewViewModel: TimelineMediaPreviewViewModelType {
|
||||
}
|
||||
}
|
||||
|
||||
private func redactItem(_ item: TimelineMediaPreviewItem.Media) {
|
||||
timelineViewModel.context.send(viewAction: .handleTimelineItemMenuAction(itemID: item.timelineItem.id, action: .redact(isMedia: true)))
|
||||
private func redactItem(_ item: TimelineMediaPreviewItem.Media, reason: String) {
|
||||
timelineViewModel.context.send(viewAction: .redactConfirmed(itemID: item.timelineItem.id, reason: reason))
|
||||
state.bindings.redactConfirmationItem = nil
|
||||
state.previewControllerDriver.send(.dismissDetailsSheet)
|
||||
actionsSubject.send(.dismiss)
|
||||
|
||||
+7
-2
@@ -16,6 +16,7 @@ struct TimelineMediaPreviewRedactConfirmationView: View {
|
||||
@ObservedObject var context: TimelineMediaPreviewViewModel.Context
|
||||
var preferredColorScheme: ColorScheme? = .dark
|
||||
|
||||
@State private var reason = ""
|
||||
@State private var sheetHeight: CGFloat = .zero
|
||||
private let topPadding: CGFloat = 19
|
||||
|
||||
@@ -24,6 +25,10 @@ struct TimelineMediaPreviewRedactConfirmationView: View {
|
||||
VStack(spacing: 0) {
|
||||
header
|
||||
preview
|
||||
TextField(L10n.screenRoomConfirmRemovalReasonPlaceholder, text: $reason)
|
||||
.textFieldStyle(.compound(labelText: L10n.screenRoomConfirmRemovalReasonLabel))
|
||||
.padding(.horizontal, 24)
|
||||
.padding(.bottom, 40)
|
||||
buttons
|
||||
}
|
||||
.readHeight($sheetHeight)
|
||||
@@ -95,13 +100,13 @@ struct TimelineMediaPreviewRedactConfirmationView: View {
|
||||
}
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
.padding(.horizontal, 24)
|
||||
.padding(.bottom, 40)
|
||||
.padding(.bottom, 24)
|
||||
}
|
||||
|
||||
private var buttons: some View {
|
||||
VStack(spacing: 16) {
|
||||
Button(L10n.actionRemove, role: .destructive) {
|
||||
context.send(viewAction: .redactConfirmation(item: item))
|
||||
context.send(viewAction: .redactConfirmation(item: item, reason: reason))
|
||||
}
|
||||
.buttonStyle(.compound(.primary))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user