diff --git a/ElementX.xcodeproj/project.pbxproj b/ElementX.xcodeproj/project.pbxproj index 6bd508e60..16a0be99d 100644 --- a/ElementX.xcodeproj/project.pbxproj +++ b/ElementX.xcodeproj/project.pbxproj @@ -8764,7 +8764,7 @@ repositoryURL = "https://github.com/element-hq/element-call-swift"; requirement = { kind = exactVersion; - version = 0.12.2; + version = "0.13.0-rc.1"; }; }; 821C67C9A7F8CC3FD41B28B4 /* XCRemoteSwiftPackageReference "emojibase-bindings" */ = { diff --git a/ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index a0e5b3ba0..18e02f387 100644 --- a/ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -59,8 +59,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/element-hq/element-call-swift", "state" : { - "revision" : "46e04acd94d139223364806063eda083f17007d0", - "version" : "0.12.2" + "revision" : "b3ceeddf59652a0806c008858ef9885bdd924d4c", + "version" : "0.13.0-rc.1" } }, { diff --git a/ElementX/Sources/Screens/CallScreen/CallScreenModels.swift b/ElementX/Sources/Screens/CallScreen/CallScreenModels.swift index fcd7fcbad..9501061ce 100644 --- a/ElementX/Sources/Screens/CallScreen/CallScreenModels.swift +++ b/ElementX/Sources/Screens/CallScreen/CallScreenModels.swift @@ -56,6 +56,8 @@ enum CallScreenJavaScriptMessageName: String, CaseIterable { case showNativeOutputDevicePicker /// Used to determine if the webview has selected the earpiece or not. case onOutputDeviceSelect + /// Used to handle the webview back button + case onBackButtonPressed private var postMessageScript: String { switch self { @@ -87,6 +89,12 @@ enum CallScreenJavaScriptMessageName: String, CaseIterable { window.webkit.messageHandlers.\(rawValue).postMessage(id); }; """ + case .onBackButtonPressed: + """ + window.controls.\(rawValue) = () => { + window.webkit.messageHandlers.\(rawValue).postMessage(""); + } + """ } } diff --git a/ElementX/Sources/Screens/CallScreen/CallScreenViewModel.swift b/ElementX/Sources/Screens/CallScreen/CallScreenViewModel.swift index 24167e60d..4c35f11ee 100644 --- a/ElementX/Sources/Screens/CallScreen/CallScreenViewModel.swift +++ b/ElementX/Sources/Screens/CallScreen/CallScreenViewModel.swift @@ -114,7 +114,7 @@ class CallScreenViewModel: CallScreenViewModelType, CallScreenViewModelProtocol setupCall() timeoutTask = Task { [weak self] in - try? await Task.sleep(for: .seconds(30)) + try? await Task.sleep(for: .seconds(10)) guard !Task.isCancelled, let self else { return } MXLog.error("Failed to join Element Call: Timeout") state.bindings.alertInfo = .init(id: UUID(), diff --git a/ElementX/Sources/Screens/CallScreen/View/CallScreen.swift b/ElementX/Sources/Screens/CallScreen/View/CallScreen.swift index b9452519b..10071fe89 100644 --- a/ElementX/Sources/Screens/CallScreen/View/CallScreen.swift +++ b/ElementX/Sources/Screens/CallScreen/View/CallScreen.swift @@ -16,21 +16,10 @@ struct CallScreen: View { @ObservedObject var context: CallScreenViewModel.Context var body: some View { - NavigationStack { - content - .frame(maxWidth: .infinity, maxHeight: .infinity) - .background(Color.compound.bgCanvasDefault.ignoresSafeArea()) - .navigationBarTitleDisplayMode(.inline) - .toolbar { - ToolbarItem(placement: .cancellationAction) { - Button { context.send(viewAction: .navigateBack) } label: { - Image(systemSymbol: .chevronBackward) - .fontWeight(.semibold) - } - } - } - } - .alert(item: $context.alertInfo) + content + .frame(maxWidth: .infinity, maxHeight: .infinity) + .background(Color.compound.bgCanvasDefault.ignoresSafeArea()) + .alert(item: $context.alertInfo) } @ViewBuilder @@ -185,6 +174,8 @@ private struct CallView: UIViewRepresentable { case .onOutputDeviceSelect: guard let deviceID = message.body as? String else { return } viewModelContext?.send(viewAction: .outputDeviceSelected(deviceID: deviceID)) + case .onBackButtonPressed: + viewModelContext?.send(viewAction: .navigateBack) } } @@ -354,8 +345,6 @@ struct CallScreen_Previews: PreviewProvider { }() static var previews: some View { - NavigationStack { - CallScreen(context: viewModel.context) - } + CallScreen(context: viewModel.context) } } diff --git a/ElementX/Sources/Services/ElementCall/ElementCallWidgetDriver.swift b/ElementX/Sources/Services/ElementCall/ElementCallWidgetDriver.swift index 5521f7740..0824a7703 100644 --- a/ElementX/Sources/Services/ElementCall/ElementCallWidgetDriver.swift +++ b/ElementX/Sources/Services/ElementCall/ElementCallWidgetDriver.swift @@ -83,7 +83,7 @@ class ElementCallWidgetDriver: WidgetCapabilitiesProvider, ElementCallWidgetDriv widgetId: widgetID, parentUrl: nil, header: .appBar, - hideHeader: nil, + hideHeader: true, preload: nil, fontScale: nil, appPrompt: false, diff --git a/project.yml b/project.yml index 2fc9d4a9b..a5d9d034b 100644 --- a/project.yml +++ b/project.yml @@ -77,7 +77,7 @@ packages: # path: ../matrix-analytics-events EmbeddedElementCall: url: https://github.com/element-hq/element-call-swift - exactVersion: 0.12.2 + exactVersion: 0.13.0-rc.1 Emojibase: url: https://github.com/matrix-org/emojibase-bindings minorVersion: 1.4.2