mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-04 19:11:45 +00:00
Various tweaks following code review
This commit is contained in:
committed by
Stefan Ceriu
parent
5f6edacc1a
commit
8b11727f19
@@ -27,7 +27,7 @@ final class AppSettings: ObservableObject {
|
|||||||
case enableInAppNotifications
|
case enableInAppNotifications
|
||||||
case pusherProfileTag
|
case pusherProfileTag
|
||||||
case shouldCollapseRoomStateEvents
|
case shouldCollapseRoomStateEvents
|
||||||
case showStartChatFlow
|
case startChatFlowEnabled = "showStartChatFlow"
|
||||||
case mediaUploadingFlowEnabled
|
case mediaUploadingFlowEnabled
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -161,8 +161,8 @@ final class AppSettings: ObservableObject {
|
|||||||
|
|
||||||
// MARK: Start Chat
|
// MARK: Start Chat
|
||||||
|
|
||||||
@UserSetting(key: UserDefaultsKeys.showStartChatFlow.rawValue, defaultValue: false, persistIn: store)
|
@UserSetting(key: UserDefaultsKeys.startChatFlowEnabled.rawValue, defaultValue: false, persistIn: store)
|
||||||
var startChatFlowFeatureFlag
|
var startChatFlowEnabled
|
||||||
|
|
||||||
// MARK: Media Uploading
|
// MARK: Media Uploading
|
||||||
|
|
||||||
|
|||||||
@@ -328,23 +328,23 @@ class RoomProxyMock: RoomProxyProtocol {
|
|||||||
}
|
}
|
||||||
//MARK: - sendImage
|
//MARK: - sendImage
|
||||||
|
|
||||||
var sendImageBodyUrlCallsCount = 0
|
var sendImageUrlCallsCount = 0
|
||||||
var sendImageBodyUrlCalled: Bool {
|
var sendImageUrlCalled: Bool {
|
||||||
return sendImageBodyUrlCallsCount > 0
|
return sendImageUrlCallsCount > 0
|
||||||
}
|
}
|
||||||
var sendImageBodyUrlReceivedArguments: (body: String, url: URL)?
|
var sendImageUrlReceivedUrl: URL?
|
||||||
var sendImageBodyUrlReceivedInvocations: [(body: String, url: URL)] = []
|
var sendImageUrlReceivedInvocations: [URL] = []
|
||||||
var sendImageBodyUrlReturnValue: Result<Void, RoomProxyError>!
|
var sendImageUrlReturnValue: Result<Void, RoomProxyError>!
|
||||||
var sendImageBodyUrlClosure: ((String, URL) async -> Result<Void, RoomProxyError>)?
|
var sendImageUrlClosure: ((URL) async -> Result<Void, RoomProxyError>)?
|
||||||
|
|
||||||
func sendImage(body: String, url: URL) async -> Result<Void, RoomProxyError> {
|
func sendImage(url: URL) async -> Result<Void, RoomProxyError> {
|
||||||
sendImageBodyUrlCallsCount += 1
|
sendImageUrlCallsCount += 1
|
||||||
sendImageBodyUrlReceivedArguments = (body: body, url: url)
|
sendImageUrlReceivedUrl = url
|
||||||
sendImageBodyUrlReceivedInvocations.append((body: body, url: url))
|
sendImageUrlReceivedInvocations.append(url)
|
||||||
if let sendImageBodyUrlClosure = sendImageBodyUrlClosure {
|
if let sendImageUrlClosure = sendImageUrlClosure {
|
||||||
return await sendImageBodyUrlClosure(body, url)
|
return await sendImageUrlClosure(url)
|
||||||
} else {
|
} else {
|
||||||
return sendImageBodyUrlReturnValue
|
return sendImageUrlReturnValue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//MARK: - editMessage
|
//MARK: - editMessage
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ extension FileManager {
|
|||||||
try createDirectory(at: url, withIntermediateDirectories: withIntermediateDirectories)
|
try createDirectory(at: url, withIntermediateDirectories: withIntermediateDirectories)
|
||||||
}
|
}
|
||||||
|
|
||||||
func copyFileToTemporaryLocation(url: URL) throws -> URL {
|
func copyFileToTemporaryDirectory(url: URL) throws -> URL {
|
||||||
let newURL = URL.temporaryDirectory.appendingPathComponent(url.lastPathComponent)
|
let newURL = URL.temporaryDirectory.appendingPathComponent(url.lastPathComponent)
|
||||||
|
|
||||||
try? removeItem(at: newURL)
|
try? removeItem(at: newURL)
|
||||||
@@ -41,7 +41,7 @@ extension FileManager {
|
|||||||
return newURL
|
return newURL
|
||||||
}
|
}
|
||||||
|
|
||||||
func writeDataToTemporaryLocation(data: Data, fileName: String) throws -> URL {
|
func writeDataToTemporaryDirectory(data: Data, fileName: String) throws -> URL {
|
||||||
let newURL = URL.temporaryDirectory.appendingPathComponent(fileName)
|
let newURL = URL.temporaryDirectory.appendingPathComponent(fileName)
|
||||||
|
|
||||||
try data.write(to: newURL)
|
try data.write(to: newURL)
|
||||||
|
|||||||
+1
-1
@@ -24,6 +24,6 @@ final class DeveloperOptionsScreenCoordinator: CoordinatorProtocol {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func toPresentable() -> AnyView {
|
func toPresentable() -> AnyView {
|
||||||
AnyView(DeveloperOptionsScreenScreen(context: viewModel.context))
|
AnyView(DeveloperOptionsScreen(context: viewModel.context))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,12 +24,12 @@ struct DeveloperOptionsScreenViewState: BindableState {
|
|||||||
|
|
||||||
struct DeveloperOptionsScreenViewStateBindings {
|
struct DeveloperOptionsScreenViewStateBindings {
|
||||||
var shouldCollapseRoomStateEvents: Bool
|
var shouldCollapseRoomStateEvents: Bool
|
||||||
var showStartChatFlow: Bool
|
var startChatFlowEnabled: Bool
|
||||||
var mediaUploadFlowEnabled: Bool
|
var mediaUploadFlowEnabled: Bool
|
||||||
}
|
}
|
||||||
|
|
||||||
enum DeveloperOptionsScreenViewAction {
|
enum DeveloperOptionsScreenViewAction {
|
||||||
case changedShouldCollapseRoomStateEvents
|
case changedShouldCollapseRoomStateEvents
|
||||||
case changedShowStartChatFlow
|
case changedStartChatFlowEnabled
|
||||||
case changedShowMediaUploadFlow
|
case changedMediaUploadFlowEnabled
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -23,7 +23,7 @@ class DeveloperOptionsScreenViewModel: DeveloperOptionsScreenViewModelType, Deve
|
|||||||
|
|
||||||
init() {
|
init() {
|
||||||
let bindings = DeveloperOptionsScreenViewStateBindings(shouldCollapseRoomStateEvents: ServiceLocator.shared.settings.shouldCollapseRoomStateEvents,
|
let bindings = DeveloperOptionsScreenViewStateBindings(shouldCollapseRoomStateEvents: ServiceLocator.shared.settings.shouldCollapseRoomStateEvents,
|
||||||
showStartChatFlow: ServiceLocator.shared.settings.startChatFlowFeatureFlag,
|
startChatFlowEnabled: ServiceLocator.shared.settings.startChatFlowEnabled,
|
||||||
mediaUploadFlowEnabled: ServiceLocator.shared.settings.mediaUploadingFlowEnabled)
|
mediaUploadFlowEnabled: ServiceLocator.shared.settings.mediaUploadingFlowEnabled)
|
||||||
let state = DeveloperOptionsScreenViewState(bindings: bindings)
|
let state = DeveloperOptionsScreenViewState(bindings: bindings)
|
||||||
|
|
||||||
@@ -38,9 +38,9 @@ class DeveloperOptionsScreenViewModel: DeveloperOptionsScreenViewModelType, Deve
|
|||||||
switch viewAction {
|
switch viewAction {
|
||||||
case .changedShouldCollapseRoomStateEvents:
|
case .changedShouldCollapseRoomStateEvents:
|
||||||
ServiceLocator.shared.settings.shouldCollapseRoomStateEvents = state.bindings.shouldCollapseRoomStateEvents
|
ServiceLocator.shared.settings.shouldCollapseRoomStateEvents = state.bindings.shouldCollapseRoomStateEvents
|
||||||
case .changedShowStartChatFlow:
|
case .changedStartChatFlowEnabled:
|
||||||
ServiceLocator.shared.settings.startChatFlowFeatureFlag = state.bindings.showStartChatFlow
|
ServiceLocator.shared.settings.startChatFlowEnabled = state.bindings.startChatFlowEnabled
|
||||||
case .changedShowMediaUploadFlow:
|
case .changedMediaUploadFlowEnabled:
|
||||||
ServiceLocator.shared.settings.mediaUploadingFlowEnabled = state.bindings.mediaUploadFlowEnabled
|
ServiceLocator.shared.settings.mediaUploadingFlowEnabled = state.bindings.mediaUploadFlowEnabled
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-6
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
|
||||||
struct DeveloperOptionsScreenScreen: View {
|
struct DeveloperOptionsScreen: View {
|
||||||
@ObservedObject var context: DeveloperOptionsScreenViewModel.Context
|
@ObservedObject var context: DeveloperOptionsScreenViewModel.Context
|
||||||
@State private var showConfetti = false
|
@State private var showConfetti = false
|
||||||
|
|
||||||
@@ -32,18 +32,18 @@ struct DeveloperOptionsScreenScreen: View {
|
|||||||
context.send(viewAction: .changedShouldCollapseRoomStateEvents)
|
context.send(viewAction: .changedShouldCollapseRoomStateEvents)
|
||||||
}
|
}
|
||||||
|
|
||||||
Toggle(isOn: $context.showStartChatFlow) {
|
Toggle(isOn: $context.startChatFlowEnabled) {
|
||||||
Text("Show Start Chat flow")
|
Text("Show Start Chat flow")
|
||||||
}
|
}
|
||||||
.onChange(of: context.showStartChatFlow) { _ in
|
.onChange(of: context.startChatFlowEnabled) { _ in
|
||||||
context.send(viewAction: .changedShowStartChatFlow)
|
context.send(viewAction: .changedStartChatFlowEnabled)
|
||||||
}
|
}
|
||||||
|
|
||||||
Toggle(isOn: $context.mediaUploadFlowEnabled) {
|
Toggle(isOn: $context.mediaUploadFlowEnabled) {
|
||||||
Text("Show Media Uploading flow")
|
Text("Show Media Uploading flow")
|
||||||
}
|
}
|
||||||
.onChange(of: context.mediaUploadFlowEnabled) { _ in
|
.onChange(of: context.mediaUploadFlowEnabled) { _ in
|
||||||
context.send(viewAction: .changedShowMediaUploadFlow)
|
context.send(viewAction: .changedMediaUploadFlowEnabled)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,6 +86,6 @@ struct DeveloperOptionsScreenScreen: View {
|
|||||||
struct DeveloperOptionsScreen_Previews: PreviewProvider {
|
struct DeveloperOptionsScreen_Previews: PreviewProvider {
|
||||||
static var previews: some View {
|
static var previews: some View {
|
||||||
let viewModel = DeveloperOptionsScreenViewModel()
|
let viewModel = DeveloperOptionsScreenViewModel()
|
||||||
DeveloperOptionsScreenScreen(context: viewModel.context)
|
DeveloperOptionsScreen(context: viewModel.context)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -69,8 +69,8 @@ struct HomeScreenViewState: BindableState {
|
|||||||
|
|
||||||
var roomListMode: HomeScreenRoomListMode = .skeletons
|
var roomListMode: HomeScreenRoomListMode = .skeletons
|
||||||
|
|
||||||
var showStartChatFlowEnabled: Bool {
|
var startChatFlowEnabled: Bool {
|
||||||
ServiceLocator.shared.settings.startChatFlowFeatureFlag
|
ServiceLocator.shared.settings.startChatFlowEnabled
|
||||||
}
|
}
|
||||||
|
|
||||||
var visibleRooms: [HomeScreenRoom] {
|
var visibleRooms: [HomeScreenRoom] {
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ struct HomeScreen: View {
|
|||||||
ToolbarItem(placement: .navigationBarLeading) {
|
ToolbarItem(placement: .navigationBarLeading) {
|
||||||
userMenuButton
|
userMenuButton
|
||||||
}
|
}
|
||||||
if context.viewState.showStartChatFlowEnabled {
|
if context.viewState.startChatFlowEnabled {
|
||||||
ToolbarItemGroup(placement: .bottomBar) {
|
ToolbarItemGroup(placement: .bottomBar) {
|
||||||
Spacer()
|
Spacer()
|
||||||
newRoomButton
|
newRoomButton
|
||||||
|
|||||||
@@ -15,12 +15,17 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
import SwiftUI
|
import SwiftUI
|
||||||
import UIKit
|
|
||||||
|
|
||||||
enum CameraPickerAction {
|
enum CameraPickerAction {
|
||||||
case selectFile(URL)
|
case selectFile(URL)
|
||||||
case cancel
|
case cancel
|
||||||
case error(Error?)
|
case error(CameraPickerError)
|
||||||
|
}
|
||||||
|
|
||||||
|
enum CameraPickerError: Error {
|
||||||
|
case invalidJpegData
|
||||||
|
case invalidOriginalImage
|
||||||
|
case failedWritingToTemporaryDirectory
|
||||||
}
|
}
|
||||||
|
|
||||||
struct CameraPicker: UIViewControllerRepresentable {
|
struct CameraPicker: UIViewControllerRepresentable {
|
||||||
@@ -50,31 +55,31 @@ struct CameraPicker: UIViewControllerRepresentable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final class Coordinator: NSObject, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
|
final class Coordinator: NSObject, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
|
||||||
private var parent: CameraPicker
|
private var cameraPicker: CameraPicker
|
||||||
|
|
||||||
init(_ parent: CameraPicker) {
|
init(_ cameraPicker: CameraPicker) {
|
||||||
self.parent = parent
|
self.cameraPicker = cameraPicker
|
||||||
}
|
}
|
||||||
|
|
||||||
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {
|
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {
|
||||||
if let videoURL = info[.mediaURL] as? URL {
|
if let videoURL = info[.mediaURL] as? URL {
|
||||||
parent.callback(.selectFile(videoURL))
|
cameraPicker.callback(.selectFile(videoURL))
|
||||||
} else if let image = info[.originalImage] as? UIImage {
|
} else if let image = info[.originalImage] as? UIImage {
|
||||||
guard let jpegData = image.jpegData(compressionQuality: 1.0) else {
|
guard let jpegData = image.jpegData(compressionQuality: 1.0) else {
|
||||||
parent.callback(.error(nil))
|
cameraPicker.callback(.error(.invalidJpegData))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
let fileName = "\(UUID().uuidString).jpg"
|
let fileName = "\(Date.now.formatted(date: .abbreviated, time: .shortened)).jpg"
|
||||||
|
|
||||||
do {
|
do {
|
||||||
let url = try FileManager.default.writeDataToTemporaryLocation(data: jpegData, fileName: fileName)
|
let url = try FileManager.default.writeDataToTemporaryDirectory(data: jpegData, fileName: fileName)
|
||||||
parent.callback(.selectFile(url))
|
cameraPicker.callback(.selectFile(url))
|
||||||
} catch {
|
} catch {
|
||||||
parent.callback(.error(error))
|
cameraPicker.callback(.error(.failedWritingToTemporaryDirectory))
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
parent.callback(.error(nil))
|
cameraPicker.callback(.error(.invalidOriginalImage))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,12 +15,15 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
import SwiftUI
|
import SwiftUI
|
||||||
import UIKit
|
|
||||||
|
|
||||||
enum DocumentPickerAction {
|
enum DocumentPickerAction {
|
||||||
case selectFile(URL)
|
case selectFile(URL)
|
||||||
case cancel
|
case cancel
|
||||||
case error(Error?)
|
case error(DocumentPickerError)
|
||||||
|
}
|
||||||
|
|
||||||
|
enum DocumentPickerError: Error {
|
||||||
|
case unknown
|
||||||
}
|
}
|
||||||
|
|
||||||
struct DocumentPicker: UIViewControllerRepresentable {
|
struct DocumentPicker: UIViewControllerRepresentable {
|
||||||
@@ -45,25 +48,25 @@ struct DocumentPicker: UIViewControllerRepresentable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final class Coordinator: NSObject, UIDocumentPickerDelegate {
|
final class Coordinator: NSObject, UIDocumentPickerDelegate {
|
||||||
private var parent: DocumentPicker
|
private var documentPicker: DocumentPicker
|
||||||
|
|
||||||
init(_ parent: DocumentPicker) {
|
init(_ documentPicker: DocumentPicker) {
|
||||||
self.parent = parent
|
self.documentPicker = documentPicker
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: UIDocumentPickerDelegate
|
// MARK: UIDocumentPickerDelegate
|
||||||
|
|
||||||
func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) {
|
func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) {
|
||||||
parent.callback(.cancel)
|
documentPicker.callback(.cancel)
|
||||||
}
|
}
|
||||||
|
|
||||||
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
|
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
|
||||||
guard let url = urls.first else {
|
guard let url = urls.first else {
|
||||||
parent.callback(.error(nil))
|
documentPicker.callback(.error(.unknown))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
parent.callback(.selectFile(url))
|
documentPicker.callback(.selectFile(url))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,36 +47,36 @@ struct PhotoLibraryPicker: UIViewControllerRepresentable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final class Coordinator: NSObject, PHPickerViewControllerDelegate {
|
final class Coordinator: NSObject, PHPickerViewControllerDelegate {
|
||||||
private var parent: PhotoLibraryPicker
|
private var photoLibraryPicker: PhotoLibraryPicker
|
||||||
|
|
||||||
init(_ parent: PhotoLibraryPicker) {
|
init(_ photoLibraryPicker: PhotoLibraryPicker) {
|
||||||
self.parent = parent
|
self.photoLibraryPicker = photoLibraryPicker
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: PHPickerViewControllerDelegate
|
// MARK: PHPickerViewControllerDelegate
|
||||||
|
|
||||||
func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
|
func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
|
||||||
guard let provider = results.first?.itemProvider else {
|
guard let provider = results.first?.itemProvider else {
|
||||||
parent.callback(.cancel)
|
photoLibraryPicker.callback(.cancel)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
provider.loadFileRepresentation(forTypeIdentifier: "public.item") { @MainActor [weak self] url, error in
|
provider.loadFileRepresentation(forTypeIdentifier: "public.item") { [weak self] url, error in
|
||||||
guard let url else {
|
guard let url else {
|
||||||
self?.parent.callback(.error(error))
|
self?.photoLibraryPicker.callback(.error(error))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
do {
|
do {
|
||||||
let _ = url.startAccessingSecurityScopedResource()
|
let _ = url.startAccessingSecurityScopedResource()
|
||||||
let newURL = try FileManager.default.copyFileToTemporaryLocation(url: url)
|
let newURL = try FileManager.default.copyFileToTemporaryDirectory(url: url)
|
||||||
url.stopAccessingSecurityScopedResource()
|
url.stopAccessingSecurityScopedResource()
|
||||||
|
|
||||||
Task { @MainActor in
|
Task { @MainActor in
|
||||||
self?.parent.callback(.selectFile(newURL))
|
self?.photoLibraryPicker.callback(.selectFile(newURL))
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
self?.parent.callback(.error(error))
|
self?.photoLibraryPicker.callback(.error(error))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -51,6 +51,6 @@ final class MediaPickerPreviewScreenCoordinator: CoordinatorProtocol {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func toPresentable() -> AnyView {
|
func toPresentable() -> AnyView {
|
||||||
AnyView(MediaPickerPreviewScreenScreen(context: viewModel.context))
|
AnyView(MediaPickerPreviewScreen(context: viewModel.context))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -17,7 +17,7 @@
|
|||||||
import QuickLook
|
import QuickLook
|
||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
|
||||||
struct MediaPickerPreviewScreenScreen: View {
|
struct MediaPickerPreviewScreen: View {
|
||||||
@ObservedObject var context: MediaPickerPreviewScreenViewModel.Context
|
@ObservedObject var context: MediaPickerPreviewScreenViewModel.Context
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
@@ -105,6 +105,6 @@ private class PreviewItem: NSObject, QLPreviewItem {
|
|||||||
struct MediaPickerPreviewScreen_Previews: PreviewProvider {
|
struct MediaPickerPreviewScreen_Previews: PreviewProvider {
|
||||||
static let viewModel = MediaPickerPreviewScreenViewModel(url: URL.picturesDirectory, title: nil)
|
static let viewModel = MediaPickerPreviewScreenViewModel(url: URL.picturesDirectory, title: nil)
|
||||||
static var previews: some View {
|
static var previews: some View {
|
||||||
MediaPickerPreviewScreenScreen(context: viewModel.context)
|
MediaPickerPreviewScreen(context: viewModel.context)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -194,7 +194,7 @@ class RoomProxy: RoomProxyProtocol {
|
|||||||
try self.room.sendReply(msg: message, inReplyToEventId: eventID, txnId: transactionId)
|
try self.room.sendReply(msg: message, inReplyToEventId: eventID, txnId: transactionId)
|
||||||
} else {
|
} else {
|
||||||
let messageContent = messageEventContentFromMarkdown(md: message)
|
let messageContent = messageEventContentFromMarkdown(md: message)
|
||||||
try self.room.send(msg: messageContent, txnId: transactionId)
|
self.room.send(msg: messageContent, txnId: transactionId)
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
return .failure(.failedSendingMessage)
|
return .failure(.failedSendingMessage)
|
||||||
@@ -219,7 +219,7 @@ class RoomProxy: RoomProxyProtocol {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func sendImage(body: String, url: URL) async -> Result<Void, RoomProxyError> {
|
func sendImage(url: URL) async -> Result<Void, RoomProxyError> {
|
||||||
.failure(.failedSendingMedia)
|
.failure(.failedSendingMedia)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ protocol RoomProxyProtocol {
|
|||||||
|
|
||||||
func sendReaction(_ reaction: String, to eventID: String) async -> Result<Void, RoomProxyError>
|
func sendReaction(_ reaction: String, to eventID: String) async -> Result<Void, RoomProxyError>
|
||||||
|
|
||||||
func sendImage(body: String, url: URL) async -> Result<Void, RoomProxyError>
|
func sendImage(url: URL) async -> Result<Void, RoomProxyError>
|
||||||
|
|
||||||
func editMessage(_ newMessage: String, original eventID: String) async -> Result<Void, RoomProxyError>
|
func editMessage(_ newMessage: String, original eventID: String) async -> Result<Void, RoomProxyError>
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -17,4 +17,4 @@
|
|||||||
import ElementX
|
import ElementX
|
||||||
import XCTest
|
import XCTest
|
||||||
|
|
||||||
class DeveloperOptionsScreenScreenUITests: XCTestCase { }
|
class DeveloperOptionsScreenUITests: XCTestCase { }
|
||||||
+1
-1
@@ -17,4 +17,4 @@
|
|||||||
import ElementX
|
import ElementX
|
||||||
import XCTest
|
import XCTest
|
||||||
|
|
||||||
class MediaPickerPreviewScreenScreenUITests: XCTestCase { }
|
class MediaPickerPreviewScreenUITests: XCTestCase { }
|
||||||
@@ -19,4 +19,4 @@ import XCTest
|
|||||||
@testable import ElementX
|
@testable import ElementX
|
||||||
|
|
||||||
@MainActor
|
@MainActor
|
||||||
class MediaPickerPreviewScreenScreenViewModelTests: XCTestCase { }
|
class MediaPickerPreviewScreenViewModelTests: XCTestCase { }
|
||||||
|
|||||||
Reference in New Issue
Block a user