diff --git a/apps/ios/Shared/Views/NewChat/NewChatButton.swift b/apps/ios/Shared/Views/NewChat/NewChatButton.swift index 87c2135529..7ba79e3ae0 100644 --- a/apps/ios/Shared/Views/NewChat/NewChatButton.swift +++ b/apps/ios/Shared/Views/NewChat/NewChatButton.swift @@ -81,7 +81,7 @@ enum PlanAndConnectAlert: Identifiable { } } -func planAndConnectAlert(_ alert: PlanAndConnectAlert, dismiss: Bool) -> Alert { +func planAndConnectAlert(_ alert: PlanAndConnectAlert, dismiss: Bool, onCancel: (() -> Void)? = nil) -> Alert { switch alert { case let .ownInvitationLinkConfirmConnect(connectionLink, connectionPlan, incognito): return Alert( @@ -91,7 +91,7 @@ func planAndConnectAlert(_ alert: PlanAndConnectAlert, dismiss: Bool) -> Alert { Text(incognito ? "Connect incognito" : "Connect"), action: { connectViaLink(connectionLink, connectionPlan: connectionPlan, dismiss: dismiss, incognito: incognito) } ), - secondaryButton: .cancel() + secondaryButton: .cancel() { onCancel?() } ) case .invitationLinkConnecting: return Alert( @@ -106,7 +106,7 @@ func planAndConnectAlert(_ alert: PlanAndConnectAlert, dismiss: Bool) -> Alert { Text(incognito ? "Connect incognito" : "Connect"), action: { connectViaLink(connectionLink, connectionPlan: connectionPlan, dismiss: dismiss, incognito: incognito) } ), - secondaryButton: .cancel() + secondaryButton: .cancel() { onCancel?() } ) case let .contactAddressConnectingConfirmReconnect(connectionLink, connectionPlan, incognito): return Alert( @@ -116,7 +116,7 @@ func planAndConnectAlert(_ alert: PlanAndConnectAlert, dismiss: Bool) -> Alert { Text(incognito ? "Connect incognito" : "Connect"), action: { connectViaLink(connectionLink, connectionPlan: connectionPlan, dismiss: dismiss, incognito: incognito) } ), - secondaryButton: .cancel() + secondaryButton: .cancel() { onCancel?() } ) case let .groupLinkConfirmConnect(connectionLink, connectionPlan, incognito): return Alert( @@ -126,7 +126,7 @@ func planAndConnectAlert(_ alert: PlanAndConnectAlert, dismiss: Bool) -> Alert { Text(incognito ? "Join incognito" : "Join"), action: { connectViaLink(connectionLink, connectionPlan: connectionPlan, dismiss: dismiss, incognito: incognito) } ), - secondaryButton: .cancel() + secondaryButton: .cancel() { onCancel?() } ) case let .groupLinkConnectingConfirmReconnect(connectionLink, connectionPlan, incognito): return Alert( @@ -136,7 +136,7 @@ func planAndConnectAlert(_ alert: PlanAndConnectAlert, dismiss: Bool) -> Alert { Text(incognito ? "Join incognito" : "Join"), action: { connectViaLink(connectionLink, connectionPlan: connectionPlan, dismiss: dismiss, incognito: incognito) } ), - secondaryButton: .cancel() + secondaryButton: .cancel() { onCancel?() } ) case let .groupLinkConnecting(_, groupInfo): if let groupInfo = groupInfo { @@ -169,7 +169,7 @@ enum PlanAndConnectActionSheet: Identifiable { } } -func planAndConnectActionSheet(_ sheet: PlanAndConnectActionSheet, dismiss: Bool) -> ActionSheet { +func planAndConnectActionSheet(_ sheet: PlanAndConnectActionSheet, dismiss: Bool, onCancel: (() -> Void)? = nil) -> ActionSheet { switch sheet { case let .askCurrentOrIncognitoProfile(connectionLink, connectionPlan, title): return ActionSheet( @@ -177,7 +177,7 @@ func planAndConnectActionSheet(_ sheet: PlanAndConnectActionSheet, dismiss: Bool buttons: [ .default(Text("Use current profile")) { connectViaLink(connectionLink, connectionPlan: connectionPlan, dismiss: dismiss, incognito: false) }, .default(Text("Use new incognito profile")) { connectViaLink(connectionLink, connectionPlan: connectionPlan, dismiss: dismiss, incognito: true) }, - .cancel() + .cancel() { onCancel?() } ] ) case let .askCurrentOrIncognitoProfileDestructive(connectionLink, connectionPlan, title): @@ -186,7 +186,7 @@ func planAndConnectActionSheet(_ sheet: PlanAndConnectActionSheet, dismiss: Bool buttons: [ .destructive(Text("Use current profile")) { connectViaLink(connectionLink, connectionPlan: connectionPlan, dismiss: dismiss, incognito: false) }, .destructive(Text("Use new incognito profile")) { connectViaLink(connectionLink, connectionPlan: connectionPlan, dismiss: dismiss, incognito: true) }, - .cancel() + .cancel() { onCancel?() } ] ) case let .askCurrentOrIncognitoProfileConnectContactViaAddress(contact): @@ -195,7 +195,7 @@ func planAndConnectActionSheet(_ sheet: PlanAndConnectActionSheet, dismiss: Bool buttons: [ .default(Text("Use current profile")) { connectContactViaAddress_(contact, dismiss: dismiss, incognito: false) }, .default(Text("Use new incognito profile")) { connectContactViaAddress_(contact, dismiss: dismiss, incognito: true) }, - .cancel() + .cancel() { onCancel?() } ] ) case let .ownGroupLinkConfirmConnect(connectionLink, connectionPlan, incognito, groupInfo): @@ -205,7 +205,7 @@ func planAndConnectActionSheet(_ sheet: PlanAndConnectActionSheet, dismiss: Bool buttons: [ .default(Text("Open group")) { openKnownGroup(groupInfo, dismiss: dismiss, showAlreadyExistsAlert: nil) }, .destructive(Text(incognito ? "Join incognito" : "Join with current profile")) { connectViaLink(connectionLink, connectionPlan: connectionPlan, dismiss: dismiss, incognito: incognito) }, - .cancel() + .cancel() { onCancel?() } ] ) } else { @@ -215,7 +215,7 @@ func planAndConnectActionSheet(_ sheet: PlanAndConnectActionSheet, dismiss: Bool .default(Text("Open group")) { openKnownGroup(groupInfo, dismiss: dismiss, showAlreadyExistsAlert: nil) }, .destructive(Text("Use current profile")) { connectViaLink(connectionLink, connectionPlan: connectionPlan, dismiss: dismiss, incognito: false) }, .destructive(Text("Use new incognito profile")) { connectViaLink(connectionLink, connectionPlan: connectionPlan, dismiss: dismiss, incognito: true) }, - .cancel() + .cancel() { onCancel?() } ] ) } diff --git a/apps/ios/Shared/Views/NewChat/NewChatView.swift b/apps/ios/Shared/Views/NewChat/NewChatView.swift index 8daf5a3788..7533bce8c4 100644 --- a/apps/ios/Shared/Views/NewChat/NewChatView.swift +++ b/apps/ios/Shared/Views/NewChat/NewChatView.swift @@ -226,11 +226,11 @@ private struct ConnectView: View { viewBody() .alert(item: $alert) { a in switch(a) { - case let .planAndConnectAlert(alert): return planAndConnectAlert(alert, dismiss: true) + case let .planAndConnectAlert(alert): return planAndConnectAlert(alert, dismiss: true, onCancel: { pastedLink = "" }) case let .connectSomeAlert(.someAlert(alert, _)): return alert } } - .actionSheet(item: $sheet) { s in planAndConnectActionSheet(s, dismiss: true) } + .actionSheet(item: $sheet) { s in planAndConnectActionSheet(s, dismiss: true, onCancel: { pastedLink = "" }) } } @ViewBuilder private func viewBody() -> some View {