Report Content v2 (#659)

* created the empty files

* set up the view content

* connected the Room Coordinator to the ReportContent Coordinator

* added the loading indicators and the dismiss behaviour

* almost completed but I need to display the success indicator when the report is sent succesfully

* completed

* added an untranslated string

* tests

* Update ElementX/Sources/Screens/RoomScreen/RoomScreenCoordinator.swift

Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>

* Update ElementX/Sources/Screens/ReportContent/View/ReportContentScreen.swift

Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>

* pr comment

* pr suggestion

* removing unused identifiers

* fixing compilation error

* added a form text editor view

* changelog

---------

Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
This commit is contained in:
Mauro
2023-03-02 19:24:10 +01:00
committed by GitHub
parent 1c09a7eace
commit eed031c9cc
27 changed files with 472 additions and 85 deletions
@@ -23,6 +23,7 @@ enum RoomScreenViewModelAction {
case displayVideo(videoURL: URL, title: String?)
case displayFile(fileURL: URL, title: String?)
case displayEmojiPicker(itemId: String)
case displayReportContent(itemId: String)
}
enum RoomScreenComposerMode: Equatable {
@@ -55,7 +56,6 @@ enum RoomScreenViewAction {
/// Mark the entire room as read - this is heavy handed as a starting point for now.
case markRoomAsRead
case contextMenuAction(itemID: String, action: TimelineItemContextMenuAction)
case report(itemID: String, reason: String)
}
struct RoomScreenViewState: BindableState {
@@ -91,25 +91,6 @@ struct RoomScreenViewStateBindings {
var alertInfo: AlertInfo<RoomScreenErrorType>?
var debugInfo: TimelineItemDebugView.DebugInfo?
// Report
var report: ReportAlertItem?
}
final class ReportAlertItem: AlertItem {
init(itemID: String) {
self.itemID = itemID
}
let title = ElementL10n.reportContentCustomHint
let itemID: String
private(set) var reason = ""
lazy var reasonBinding = Binding<String>(get: { [unowned self] in
self.reason
}, set: { [unowned self] newValue in
self.reason = newValue
})
}
enum RoomScreenErrorType: Hashable {