From fe4e2d4a2287c92e49994117ac75a062c6357453 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Hu=CC=88hne?= Date: Mon, 31 Jan 2022 10:04:06 +0100 Subject: [PATCH] #972 rename account name only (bookmark) is possible without re-authentication flow --- .../Bookmarks/BookmarkViewController.swift | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/ownCloud/Bookmarks/BookmarkViewController.swift b/ownCloud/Bookmarks/BookmarkViewController.swift index 81b27e4b5..19dad5d19 100644 --- a/ownCloud/Bookmarks/BookmarkViewController.swift +++ b/ownCloud/Bookmarks/BookmarkViewController.swift @@ -28,9 +28,11 @@ class BookmarkViewController: StaticTableViewController { // MARK: - UI elements var nameSection : StaticTableViewSection? var nameRow : StaticTableViewRow? + var nameChanged = false var urlSection : StaticTableViewSection? var urlRow : StaticTableViewRow? + var urlChanged = false var certificateRow : StaticTableViewRow? var credentialsSection : StaticTableViewSection? @@ -129,6 +131,7 @@ class BookmarkViewController: StaticTableViewController { // Name section + row nameRow = StaticTableViewRow(textFieldWithAction: { [weak self] (_, sender, action) in if let textField = sender as? UITextField, action == .changed { + self?.nameChanged = true self?.bookmark?.name = (textField.text?.count == 0) ? nil : textField.text } }, placeholder: "Name".localized, value: editBookmark?.name ?? "", identifier: "row-name-name", accessibilityLabel: "Server name".localized) @@ -140,6 +143,7 @@ class BookmarkViewController: StaticTableViewController { if let textField = sender as? UITextField, action == .changed { var placeholderString = "Name".localized var changedBookmark = false + self?.urlChanged = true // Disable Continue button if there is no url if textField.text != "" { @@ -337,6 +341,25 @@ class BookmarkViewController: StaticTableViewController { } } + // Check if only account name was changed in edit mode: save and dismiss without re-authentication + if mode == .edit, nameChanged, !urlChanged, let bookmark = bookmark { + self.originalBookmark?.setValuesFrom(bookmark) + if let originalBookmark = self.originalBookmark, !OCBookmarkManager.shared.updateBookmark(originalBookmark) { + Log.error("Changes to \(originalBookmark) not saved as it's not tracked by OCBookmarkManager!") + } + + OnMainThread { + hudCompletion({ + OnMainThread { + self.userActionCompletionHandler?(self.bookmark, true) + } + self.presentingViewController?.dismiss(animated: true, completion: nil) + }) + } + + return + } + if (bookmark?.url == nil) || (bookmark?.authenticationMethodIdentifier == nil) { handleContinueURLProbe(hud: hud, hudCompletion: hudCompletion) return