From 257133db3bfa2c3128452ec8ad5574bad706a666 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Thu, 4 Aug 2022 12:41:05 +0100 Subject: [PATCH] ios: remove modal sheets before authentication (#897) * ios: remove modal sheets before authentication * line break * add reference to source --- apps/ios/Shared/ContentView.swift | 9 ++---- .../Shared/Views/Helpers/DismissSheets.swift | 28 +++++++++++++++++++ apps/ios/SimpleX.xcodeproj/project.pbxproj | 4 +++ 3 files changed, 35 insertions(+), 6 deletions(-) create mode 100644 apps/ios/Shared/Views/Helpers/DismissSheets.swift diff --git a/apps/ios/Shared/ContentView.swift b/apps/ios/Shared/ContentView.swift index 0d562ba79c..272a327e71 100644 --- a/apps/ios/Shared/ContentView.swift +++ b/apps/ios/Shared/ContentView.swift @@ -63,13 +63,10 @@ struct ContentView: View { private func runAuthenticate() { if !prefPerformLA { userAuthorized = true -// } else if showChatInfo { -// showChatInfo = false -// DispatchQueue.main.async { -// justAuthenticate() -// } } else { - justAuthenticate() + dismissAllSheets(animated: false) { + justAuthenticate() + } } } diff --git a/apps/ios/Shared/Views/Helpers/DismissSheets.swift b/apps/ios/Shared/Views/Helpers/DismissSheets.swift new file mode 100644 index 0000000000..6ef2f37925 --- /dev/null +++ b/apps/ios/Shared/Views/Helpers/DismissSheets.swift @@ -0,0 +1,28 @@ +// +// DismissSheets.swift +// SimpleX (iOS) +// +// Created by Evgeny on 04/08/2022. +// Copyright © 2022 SimpleX Chat. All rights reserved. +// + +import Foundation +import UIKit + +// https://github.com/fatbobman/SheetKit/blob/main/Sources/SheetKit/SheetKit.swift +private func keyWindow() -> UIWindow? { + UIApplication.shared.connectedScenes + .filter { $0.activationState == .foregroundActive } + .map { $0 as? UIWindowScene } + .compactMap { $0 } + .first?.windows + .filter { $0.isKeyWindow }.first +} + +func dismissAllSheets(animated flag: Bool = true, completion: (() -> Void)? = nil) { + if let c = keyWindow()?.rootViewController { + c.dismiss(animated: flag, completion: completion) + } else { + completion?() + } +} diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index 8b515d83f3..6ac923ac45 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -43,6 +43,7 @@ 5C5F2B6D27EBC3FE006A9D5F /* ImagePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C5F2B6C27EBC3FE006A9D5F /* ImagePicker.swift */; }; 5C5F2B7027EBC704006A9D5F /* ProfileImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C5F2B6F27EBC704006A9D5F /* ProfileImage.swift */; }; 5C6AD81327A834E300348BD7 /* NewChatButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C6AD81227A834E300348BD7 /* NewChatButton.swift */; }; + 5C6BA667289BD954009B8ECC /* DismissSheets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C6BA666289BD954009B8ECC /* DismissSheets.swift */; }; 5C7505A227B65FDB00BE3227 /* CIMetaView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C7505A127B65FDB00BE3227 /* CIMetaView.swift */; }; 5C7505A527B679EE00BE3227 /* NavLinkPlain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C7505A427B679EE00BE3227 /* NavLinkPlain.swift */; }; 5C7505A827B6D34800BE3227 /* ChatInfoToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C7505A727B6D34800BE3227 /* ChatInfoToolbar.swift */; }; @@ -227,6 +228,7 @@ 5C5F2B6C27EBC3FE006A9D5F /* ImagePicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImagePicker.swift; sourceTree = ""; }; 5C5F2B6F27EBC704006A9D5F /* ProfileImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileImage.swift; sourceTree = ""; }; 5C6AD81227A834E300348BD7 /* NewChatButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewChatButton.swift; sourceTree = ""; }; + 5C6BA666289BD954009B8ECC /* DismissSheets.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DismissSheets.swift; sourceTree = ""; }; 5C7505A127B65FDB00BE3227 /* CIMetaView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIMetaView.swift; sourceTree = ""; }; 5C7505A427B679EE00BE3227 /* NavLinkPlain.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavLinkPlain.swift; sourceTree = ""; }; 5C7505A727B6D34800BE3227 /* ChatInfoToolbar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatInfoToolbar.swift; sourceTree = ""; }; @@ -449,6 +451,7 @@ 5C5F2B6F27EBC704006A9D5F /* ProfileImage.swift */, 5CFE0920282EEAF60002594B /* ZoomableScrollView.swift */, 646BB38D283FDB6D001CE359 /* LocalAuthenticationUtils.swift */, + 5C6BA666289BD954009B8ECC /* DismissSheets.swift */, ); path = Helpers; sourceTree = ""; @@ -897,6 +900,7 @@ 5C5DB70E289ABDD200730FFF /* AppearanceSettings.swift in Sources */, 5C5F2B6D27EBC3FE006A9D5F /* ImagePicker.swift in Sources */, 5C9C2DA92899DA6F00CC63B1 /* NetworkAndServers.swift in Sources */, + 5C6BA667289BD954009B8ECC /* DismissSheets.swift in Sources */, 5C577F7D27C83AA10006112D /* MarkdownHelp.swift in Sources */, 5CA059EB279559F40002BEB4 /* SimpleXApp.swift in Sources */, 5CB346E92869E8BA001FD2EF /* PushEnvironment.swift in Sources */,