From 58c2be2859e7ddb8dd1e854af50bbe77b3b1c6e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Hu=CC=88hne?= <> Date: Tue, 20 Sep 2022 13:18:18 +0200 Subject: [PATCH 1/6] #1154 passcode lock interval will now respected in share extension --- .../ShareViewController.swift | 22 +++++++++++++++---- .../AppLock/AppLockManager.swift | 2 +- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/ownCloud Share Extension/ShareViewController.swift b/ownCloud Share Extension/ShareViewController.swift index 7c6ce31fa..59702a493 100644 --- a/ownCloud Share Extension/ShareViewController.swift +++ b/ownCloud Share Extension/ShareViewController.swift @@ -58,13 +58,14 @@ class ShareViewController: MoreStaticTableViewController { // Share extension allowed if !willAppearInitial { willAppearInitial = true - - if AppLockManager.supportedOnDevice { - AppLockManager.shared.showLockscreenIfNeeded() - } + + if AppLockManager.supportedOnDevice { + AppLockManager.shared.showLockscreenIfNeeded() + } if let appexNavigationController = self.navigationController as? AppExtensionNavigationController { appexNavigationController.dismissalAction = { [weak self] (_) in + AppLockManager.shared.appDidEnterBackground() self?.returnCores(completion: { Log.debug("Returned all cores (share sheet was closed / dismissed)") }) @@ -96,6 +97,18 @@ class ShareViewController: MoreStaticTableViewController { didAppearInitial = true } } + + override func viewWillDisappear(_ animated: Bool) { + super.viewWillAppear(animated) + if didAppearInitial { + AppLockManager.shared.appDidEnterBackground() + } + } + + @objc open override func dismissAnimated() { + AppLockManager.shared.appDidEnterBackground() + super.dismissAnimated() + } private var requestedCoreBookmarks : [OCBookmark] = [] @@ -146,6 +159,7 @@ class ShareViewController: MoreStaticTableViewController { } @objc private func cancelAction () { + AppLockManager.shared.appDidEnterBackground() self.returnCores(completion: { let error = NSError(domain: NSErrorDomain.ShareViewErrorDomain, code: 0, userInfo: [NSLocalizedDescriptionKey: "Canceled by user"]) self.extensionContext?.cancelRequest(withError: error) diff --git a/ownCloudAppShared/AppLock/AppLockManager.swift b/ownCloudAppShared/AppLock/AppLockManager.swift index 4e4b169f8..ca97bf601 100644 --- a/ownCloudAppShared/AppLock/AppLockManager.swift +++ b/ownCloudAppShared/AppLock/AppLockManager.swift @@ -333,7 +333,7 @@ public class AppLockManager: NSObject { } // MARK: - App Events - @objc func appDidEnterBackground() { + @objc public func appDidEnterBackground() { if unlocked { lastApplicationBackgroundedDate = Date() } else { From 5c01908a125f89aa19ebea2562cd5e67cf0c62cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Hu=CC=88hne?= <> Date: Tue, 20 Sep 2022 13:59:44 +0200 Subject: [PATCH 2/6] added changelog file --- changelog/unreleased/1156 | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 changelog/unreleased/1156 diff --git a/changelog/unreleased/1156 b/changelog/unreleased/1156 new file mode 100644 index 000000000..b330c6dc0 --- /dev/null +++ b/changelog/unreleased/1156 @@ -0,0 +1,5 @@ +Bugfix: Share Extension Passcode Lock Interval + +The passcode lock interval was not taken into use in the share extension. + +https://github.com/owncloud/ios-app/issues/1156 From 97bdce1e782942d25fece49e0b6725683f195ba5 Mon Sep 17 00:00:00 2001 From: hosy Date: Tue, 20 Sep 2022 12:00:16 +0000 Subject: [PATCH 3/6] Calens changelog updated --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f4d2bb25..cfdd91bfb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ Summary ------- * Bugfix - Enabling Markup Mode on iOS 16, Updating Theme: [#1141](https://github.com/owncloud/ios-app/issues/1141) +* Bugfix - Share Extension Passcode Lock Interval: [#1156](https://github.com/owncloud/ios-app/issues/1156) * Bugfix - Video Metadata Image: [#5296](https://github.com/owncloud/enterprise/issues/5296) * Change - New Dark Mode Themes: [#1146](https://github.com/owncloud/ios-app/issues/1146) @@ -23,6 +24,12 @@ Details https://github.com/owncloud/ios-app/issues/1141 +* Bugfix - Share Extension Passcode Lock Interval: [#1156](https://github.com/owncloud/ios-app/issues/1156) + + The passcode lock interval was not taken into use in the share extension. + + https://github.com/owncloud/ios-app/issues/1156 + * Bugfix - Video Metadata Image: [#5296](https://github.com/owncloud/enterprise/issues/5296) If a video file includes a metadata image, the video file was not visible, because the metadata From 854f857982fdc3f8f974a20cc4da03848b14ebb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Hu=CC=88hne?= <> Date: Wed, 21 Sep 2022 10:11:31 +0200 Subject: [PATCH 4/6] - fixed passcode UI in share sheet after selecting an account from the list - fixed biometrical unlock prevents showing passcode view UI --- .../ShareViewController.swift | 1 + ownCloudAppShared/AppLock/AppLockManager.swift | 15 +++++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/ownCloud Share Extension/ShareViewController.swift b/ownCloud Share Extension/ShareViewController.swift index 59702a493..6a5bf0dc8 100644 --- a/ownCloud Share Extension/ShareViewController.swift +++ b/ownCloud Share Extension/ShareViewController.swift @@ -186,6 +186,7 @@ class ShareViewController: MoreStaticTableViewController { for (bookmark) in bookmarks { let row = StaticTableViewRow(buttonWithAction: { (_ row, _ sender) in + self.didAppearInitial = false self.openDirectoryPicker(for: bookmark, withBackButton: true) }, title: bookmark.shortName, style: .plain, image: UIImage(named: "bookmark-icon")?.scaledImageFitting(in: CGSize(width: 25.0, height: 25.0)), imageWidth: 25, alignment: .left) actionsRows.append(row) diff --git a/ownCloudAppShared/AppLock/AppLockManager.swift b/ownCloudAppShared/AppLock/AppLockManager.swift index ca97bf601..c1365e51e 100644 --- a/ownCloudAppShared/AppLock/AppLockManager.swift +++ b/ownCloudAppShared/AppLock/AppLockManager.swift @@ -173,12 +173,15 @@ public class AppLockManager: NSObject { lockscreenOpenForced = forceShow lockscreenOpen = true - // Show biometrical - if !forceShow, !self.shouldDisplayCountdown, self.biometricalAuthenticationSucceeded { - showBiometricalAuthenticationInterface(context: context) - } else if setupMode { - showBiometricalAuthenticationInterface(context: context) - } + // The following code needs to be executed after a short delay, because in the share sheet the biometrical unlock UI can block adding the PasscodeViewController UI + OnMainThread(after: 0.5) { + // Show biometrical + if !forceShow, !self.shouldDisplayCountdown, self.biometricalAuthenticationSucceeded { + self.showBiometricalAuthenticationInterface(context: context) + } else if setupMode { + self.showBiometricalAuthenticationInterface(context: context) + } + } } else { dismissLockscreen(animated: true) } From 580a896c3683c8d741ae63955c1cf677be10a098 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Hu=CC=88hne?= <> Date: Wed, 21 Sep 2022 10:15:29 +0200 Subject: [PATCH 5/6] fixed CR finding --- ownCloud Share Extension/ShareViewController.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ownCloud Share Extension/ShareViewController.swift b/ownCloud Share Extension/ShareViewController.swift index 6a5bf0dc8..7813f742b 100644 --- a/ownCloud Share Extension/ShareViewController.swift +++ b/ownCloud Share Extension/ShareViewController.swift @@ -99,7 +99,7 @@ class ShareViewController: MoreStaticTableViewController { } override func viewWillDisappear(_ animated: Bool) { - super.viewWillAppear(animated) + super.viewWillDisappear(animated) if didAppearInitial { AppLockManager.shared.appDidEnterBackground() } From c75bebc634471624e874ff052abc18147595f01b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Hu=CC=88hne?= <> Date: Wed, 21 Sep 2022 12:13:36 +0200 Subject: [PATCH 6/6] only set a biometrical unlock delay for the share sheet --- ownCloudAppShared/AppLock/AppLockManager.swift | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ownCloudAppShared/AppLock/AppLockManager.swift b/ownCloudAppShared/AppLock/AppLockManager.swift index c1365e51e..b82592168 100644 --- a/ownCloudAppShared/AppLock/AppLockManager.swift +++ b/ownCloudAppShared/AppLock/AppLockManager.swift @@ -174,7 +174,11 @@ public class AppLockManager: NSObject { lockscreenOpen = true // The following code needs to be executed after a short delay, because in the share sheet the biometrical unlock UI can block adding the PasscodeViewController UI - OnMainThread(after: 0.5) { + var delay = 0.0 + if self.passwordViewHostViewController != nil { + delay = 0.5 + } + OnMainThread(after: delay) { // Show biometrical if !forceShow, !self.shouldDisplayCountdown, self.biometricalAuthenticationSucceeded { self.showBiometricalAuthenticationInterface(context: context)