diff options
-rw-r--r-- | .swiftlint.yml | 10 | ||||
-rw-r--r-- | Nextcloud.xcodeproj/project.pbxproj | 8 | ||||
-rw-r--r-- | iOSClient/Extensions/DateFormatter+Extension.swift | 17 | ||||
-rw-r--r-- | iOSClient/Extensions/UIBarButton+Extension.swift | 24 | ||||
-rw-r--r-- | iOSClient/Extensions/UIToolbar+Extension.swift | 17 | ||||
-rw-r--r-- | iOSClient/Menu/NCShare+Menu.swift | 2 | ||||
-rw-r--r-- | iOSClient/Share/Advanced/NCShareAdvancePermission.swift | 120 | ||||
-rw-r--r-- | iOSClient/Share/Advanced/NCShareAdvancePermissionFooter.swift | 20 | ||||
-rw-r--r-- | iOSClient/Share/Advanced/NCShareAdvancePermissionHeader.swift | 17 | ||||
-rw-r--r-- | iOSClient/Share/Advanced/NCShareCells.swift (renamed from iOSClient/Share/Advanced/ShareCells.swift) | 97 | ||||
-rw-r--r-- | iOSClient/Share/Advanced/NCShareNewUserAddComment.swift | 20 | ||||
-rw-r--r-- | iOSClient/Share/NCShare+Helper.swift | 31 | ||||
-rw-r--r-- | iOSClient/Share/NCShare+NCCellDelegate.swift | 17 | ||||
-rw-r--r-- | iOSClient/Share/NCShare.swift | 5 | ||||
-rw-r--r-- | iOSClient/Share/NCShareNetworking.swift | 4 | ||||
-rw-r--r-- | iOSClient/Supporting Files/en.lproj/Localizable.strings | 1 |
16 files changed, 264 insertions, 146 deletions
diff --git a/.swiftlint.yml b/.swiftlint.yml index 047b864ac..ac6e392d4 100644 --- a/.swiftlint.yml +++ b/.swiftlint.yml @@ -10,10 +10,14 @@ empty_count: severity: warning line_length: - # warning: 120 + # warning: 120, error: 200 warning: 250 error: 250 +function_body_length: + # warning: 40 + warning: 60 + type_body_length: # error: 350 error: 500 @@ -106,12 +110,8 @@ excluded: - iOSClient/Select/NCSelect.swift - iOSClient/Settings/NCEndToEndInitialize.swift - iOSClient/Settings/NCManageAutoUploadFileName.swift - - iOSClient/Share/NCShareCommentsCell.swift - iOSClient/Share/NCShareCommon.swift - - iOSClient/Share/NCShareLinkMenuView.swift - iOSClient/Share/NCShareNetworking.swift - - iOSClient/Share/NCShareQuickStatusMenu.swift - - iOSClient/Share/NCShareUserMenuView.swift - iOSClient/Shares/NCShares.swift - iOSClient/Transfers/NCTransferCell.swift - iOSClient/Transfers/NCTransfers.swift diff --git a/Nextcloud.xcodeproj/project.pbxproj b/Nextcloud.xcodeproj/project.pbxproj index dee46f5ba..c0e7fe80b 100644 --- a/Nextcloud.xcodeproj/project.pbxproj +++ b/Nextcloud.xcodeproj/project.pbxproj @@ -69,7 +69,7 @@ AFA2AC8527849604008E1EA7 /* NCActivityCommentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFA2AC8427849604008E1EA7 /* NCActivityCommentView.swift */; }; AFCE353327E4ED1900FEA6C2 /* UIToolbar+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFCE353227E4ED1900FEA6C2 /* UIToolbar+Extension.swift */; }; AFCE353527E4ED5900FEA6C2 /* DateFormatter+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFCE353427E4ED5900FEA6C2 /* DateFormatter+Extension.swift */; }; - AFCE353727E4ED7B00FEA6C2 /* ShareCells.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFCE353627E4ED7B00FEA6C2 /* ShareCells.swift */; }; + AFCE353727E4ED7B00FEA6C2 /* NCShareCells.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFCE353627E4ED7B00FEA6C2 /* NCShareCells.swift */; }; AFCE353927E5DE0500FEA6C2 /* NCShare+Helper.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFCE353827E5DE0400FEA6C2 /* NCShare+Helper.swift */; }; AFD33240276A02C100F5AE02 /* UIApplication+Orientation.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFD3323F276A02C000F5AE02 /* UIApplication+Orientation.swift */; }; D575039F27146F93008DC9DC /* String+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7A0D1342591FBC5008F8A13 /* String+Extensions.swift */; }; @@ -527,7 +527,7 @@ AFA2AC8427849604008E1EA7 /* NCActivityCommentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCActivityCommentView.swift; sourceTree = "<group>"; }; AFCE353227E4ED1900FEA6C2 /* UIToolbar+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIToolbar+Extension.swift"; sourceTree = "<group>"; }; AFCE353427E4ED5900FEA6C2 /* DateFormatter+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DateFormatter+Extension.swift"; sourceTree = "<group>"; }; - AFCE353627E4ED7B00FEA6C2 /* ShareCells.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareCells.swift; sourceTree = "<group>"; }; + AFCE353627E4ED7B00FEA6C2 /* NCShareCells.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCShareCells.swift; sourceTree = "<group>"; }; AFCE353827E5DE0400FEA6C2 /* NCShare+Helper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NCShare+Helper.swift"; sourceTree = "<group>"; }; AFD3323F276A02C000F5AE02 /* UIApplication+Orientation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIApplication+Orientation.swift"; sourceTree = "<group>"; }; D5B6AA7727200C7200D49C24 /* NCActivityTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCActivityTableViewCell.swift; sourceTree = "<group>"; }; @@ -1077,7 +1077,7 @@ isa = PBXGroup; children = ( AF93471627E2361E002537EE /* NCShareAdvancePermission.swift */, - AFCE353627E4ED7B00FEA6C2 /* ShareCells.swift */, + AFCE353627E4ED7B00FEA6C2 /* NCShareCells.swift */, AF93471827E2361E002537EE /* NCShareAdvancePermissionFooter.swift */, AF93471427E2361E002537EE /* NCShareAdvancePermissionFooter.xib */, AF93474D27E3F211002537EE /* NCShareNewUserAddComment.swift */, @@ -2571,7 +2571,7 @@ F78A18B623CDD07D00F681F3 /* NCViewerRichWorkspaceWebView.swift in Sources */, AFA2AC8527849604008E1EA7 /* NCActivityCommentView.swift in Sources */, F716B75F26F09DF600D37EFC /* NCKTVHTTPCache.swift in Sources */, - AFCE353727E4ED7B00FEA6C2 /* ShareCells.swift in Sources */, + AFCE353727E4ED7B00FEA6C2 /* NCShareCells.swift in Sources */, AF36077127BFA4E8001A243D /* ParallelWorker.swift in Sources */, F75A9EE623796C6F0044CFCE /* NCNetworking.swift in Sources */, F758B460212C56A400515F55 /* NCScan.swift in Sources */, diff --git a/iOSClient/Extensions/DateFormatter+Extension.swift b/iOSClient/Extensions/DateFormatter+Extension.swift index 2c0fd0abe..aa126ce78 100644 --- a/iOSClient/Extensions/DateFormatter+Extension.swift +++ b/iOSClient/Extensions/DateFormatter+Extension.swift @@ -3,7 +3,22 @@ // Nextcloud // // Created by Henrik Storch on 18.03.22. -// Copyright © 2022 Marino Faggiana. All rights reserved. +// Copyright © 2022 Henrik Storch. All rights reserved. +// +// Author Henrik Storch <henrik.storch@nextcloud.com> +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. // import Foundation diff --git a/iOSClient/Extensions/UIBarButton+Extension.swift b/iOSClient/Extensions/UIBarButton+Extension.swift index b56554a47..242c6e0e6 100644 --- a/iOSClient/Extensions/UIBarButton+Extension.swift +++ b/iOSClient/Extensions/UIBarButton+Extension.swift @@ -53,27 +53,3 @@ extension UIBarButtonItem { _action() } } - -extension UIView { - enum VerticalLocation: String { - case bottom - case top - } - - func addShadow(location: VerticalLocation, height: CGFloat = 2, color: UIColor = .black, opacity: Float = 0.4, radius: CGFloat = 2) { - switch location { - case .bottom: - addShadow(offset: CGSize(width: 0, height: height), color: color, opacity: opacity, radius: radius) - case .top: - addShadow(offset: CGSize(width: 0, height: -height), color: color, opacity: opacity, radius: radius) - } - } - - private func addShadow(offset: CGSize, color: UIColor, opacity: Float, radius: CGFloat) { - self.layer.masksToBounds = false - self.layer.shadowColor = color.cgColor - self.layer.shadowOffset = offset - self.layer.shadowOpacity = opacity - self.layer.shadowRadius = radius - } -} diff --git a/iOSClient/Extensions/UIToolbar+Extension.swift b/iOSClient/Extensions/UIToolbar+Extension.swift index 5afae518c..72387b255 100644 --- a/iOSClient/Extensions/UIToolbar+Extension.swift +++ b/iOSClient/Extensions/UIToolbar+Extension.swift @@ -3,7 +3,22 @@ // Nextcloud // // Created by Henrik Storch on 18.03.22. -// Copyright © 2022 Marino Faggiana. All rights reserved. +// Copyright © 2022 Henrik Storch. All rights reserved. +// +// Author Henrik Storch <henrik.storch@nextcloud.com> +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. // import Foundation diff --git a/iOSClient/Menu/NCShare+Menu.swift b/iOSClient/Menu/NCShare+Menu.swift index e713407a6..6f6b6640d 100644 --- a/iOSClient/Menu/NCShare+Menu.swift +++ b/iOSClient/Menu/NCShare+Menu.swift @@ -38,7 +38,7 @@ extension NCShare { actions.append( NCMenuAction( - title: NSLocalizedString("_share_advanced_permissions_", comment: ""), + title: NSLocalizedString("_details_", comment: ""), icon: NCUtility.shared.loadImage(named: "edit"), action: { _ in guard diff --git a/iOSClient/Share/Advanced/NCShareAdvancePermission.swift b/iOSClient/Share/Advanced/NCShareAdvancePermission.swift index bc6e6e73a..4e39f0b1c 100644 --- a/iOSClient/Share/Advanced/NCShareAdvancePermission.swift +++ b/iOSClient/Share/Advanced/NCShareAdvancePermission.swift @@ -3,7 +3,22 @@ // Nextcloud // // Created by T-systems on 09/08/21. -// Copyright © 2021 Marino Faggiana. All rights reserved. +// Copyright © 2022 Henrik Storch. All rights reserved. +// +// Author Henrik Storch <henrik.storch@nextcloud.com> +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. // import UIKit @@ -22,15 +37,15 @@ class NCShareAdvancePermission: UITableViewController, NCShareAdvanceFotterDeleg } } - var share: TableShareable! + var share: NCTableShareable! var isNewShare: Bool { NCManageDatabase.shared.getTableShare(account: share.account, idShare: share.idShare) == nil } var metadata: tableMetadata! - var shareConfig: ShareConfig! + var shareConfig: NCShareConfig! var networking: NCShareNetworking? override func viewDidLoad() { super.viewDidLoad() - self.shareConfig = ShareConfig(isDirectory: metadata.directory, share: share) + self.shareConfig = NCShareConfig(isDirectory: metadata.directory, share: share) self.setNavigationTitle() if #available(iOS 13.0, *) { // disbale pull to dimiss @@ -69,7 +84,11 @@ class NCShareAdvancePermission: UITableViewController, NCShareAdvanceFotterDeleg } override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { - if section == 0 { return NSLocalizedString("_advanced_", comment: "") } else if section == 1 { return NSLocalizedString("_misc_", comment: "") } else { return nil } + if section == 0 { + return NSLocalizedString("_advanced_", comment: "") + } else if section == 1 { + return NSLocalizedString("_misc_", comment: "") + } else { return nil } } override func numberOfSections(in tableView: UITableView) -> Int { @@ -77,12 +96,16 @@ class NCShareAdvancePermission: UITableViewController, NCShareAdvanceFotterDeleg } override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - if section == 0 { return shareConfig.permissions.count } else if section == 1 { return shareConfig.advanced.count } else { return 0 } + if section == 0 { + return shareConfig.permissions.count + } else if section == 1 { + return shareConfig.advanced.count + } else { return 0 } } override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { guard let cell = shareConfig.cellFor(indexPath: indexPath) else { return UITableViewCell() } - if let cell = cell as? DatePickerTableViewCell { + if let cell = cell as? NCShareDateCell { cell.onReload = tableView.reloadData } return cell @@ -91,49 +114,50 @@ class NCShareAdvancePermission: UITableViewController, NCShareAdvanceFotterDeleg override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { tableView.deselectRow(at: indexPath, animated: true) guard let cellConfig = shareConfig.config(for: indexPath) else { return } - if let cellConfig = cellConfig as? Advanced { - switch cellConfig { - case .hideDownload: - share.hideDownload.toggle() - tableView.reloadData() - case .expirationDate: - let cell = tableView.cellForRow(at: indexPath) as? DatePickerTableViewCell - cell?.textField.becomeFirstResponder() - case .password: - guard share.password.isEmpty else { - share.password = "" - tableView.reloadData() - return - } - let alertController = UIAlertController.withTextField(titleKey: "_enforce_password_protection_") { textField in - textField.placeholder = NSLocalizedString("_password_", comment: "") - textField.isSecureTextEntry = true - } completion: { password in - self.share.password = password ?? "" - tableView.reloadData() - } - self.present(alertController, animated: true) - case .note: - let storyboard = UIStoryboard(name: "NCShare", bundle: nil) - guard let viewNewUserComment = storyboard.instantiateViewController(withIdentifier: "NCShareNewUserAddComment") as? NCShareNewUserAddComment else { return } - viewNewUserComment.metadata = self.metadata - viewNewUserComment.share = self.share - viewNewUserComment.onDismiss = tableView.reloadData - self.navigationController?.pushViewController(viewNewUserComment, animated: true) - case .label: - let alertController = UIAlertController.withTextField(titleKey: "_share_link_name_") { textField in - textField.placeholder = cellConfig.title - textField.text = self.share.label - } completion: { newValue in - self.share.label = newValue ?? "" - self.setNavigationTitle() - tableView.reloadData() - } - self.present(alertController, animated: true) - } - } else { + guard let cellConfig = cellConfig as? NCShareDetails else { cellConfig.didSelect(for: share) tableView.reloadData() + return + } + + switch cellConfig { + case .hideDownload: + share.hideDownload.toggle() + tableView.reloadData() + case .expirationDate: + let cell = tableView.cellForRow(at: indexPath) as? NCShareDateCell + cell?.textField.becomeFirstResponder() + case .password: + guard share.password.isEmpty else { + share.password = "" + tableView.reloadData() + return + } + let alertController = UIAlertController.withTextField(titleKey: "_enforce_password_protection_") { textField in + textField.placeholder = NSLocalizedString("_password_", comment: "") + textField.isSecureTextEntry = true + } completion: { password in + self.share.password = password ?? "" + tableView.reloadData() + } + self.present(alertController, animated: true) + case .note: + let storyboard = UIStoryboard(name: "NCShare", bundle: nil) + guard let viewNewUserComment = storyboard.instantiateViewController(withIdentifier: "NCShareNewUserAddComment") as? NCShareNewUserAddComment else { return } + viewNewUserComment.metadata = self.metadata + viewNewUserComment.share = self.share + viewNewUserComment.onDismiss = tableView.reloadData + self.navigationController?.pushViewController(viewNewUserComment, animated: true) + case .label: + let alertController = UIAlertController.withTextField(titleKey: "_share_link_name_") { textField in + textField.placeholder = cellConfig.title + textField.text = self.share.label + } completion: { newValue in + self.share.label = newValue ?? "" + self.setNavigationTitle() + tableView.reloadData() + } + self.present(alertController, animated: true) } } } diff --git a/iOSClient/Share/Advanced/NCShareAdvancePermissionFooter.swift b/iOSClient/Share/Advanced/NCShareAdvancePermissionFooter.swift index 3c8cbaf20..1710d09d2 100644 --- a/iOSClient/Share/Advanced/NCShareAdvancePermissionFooter.swift +++ b/iOSClient/Share/Advanced/NCShareAdvancePermissionFooter.swift @@ -2,8 +2,23 @@ // NCShareAdvancePermissionFooter.swift // Nextcloud // -// Created by T-systems on 10/08/21. -// Copyright © 2021 Marino Faggiana. All rights reserved. +// Created by T-systems on 09/08/21. +// Copyright © 2022 Henrik Storch. All rights reserved. +// +// Author Henrik Storch <henrik.storch@nextcloud.com> +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. // import UIKit @@ -22,7 +37,6 @@ class NCShareAdvancePermissionFooter: UIView { self.delegate = delegate backgroundColor = .clear - addShadow(location: .top) buttonCancel.addTarget(self, action: #selector(cancelClicked), for: .touchUpInside) buttonCancel.setTitle(NSLocalizedString("_cancel_", comment: ""), for: .normal) diff --git a/iOSClient/Share/Advanced/NCShareAdvancePermissionHeader.swift b/iOSClient/Share/Advanced/NCShareAdvancePermissionHeader.swift index b9c2151d2..28c2c7881 100644 --- a/iOSClient/Share/Advanced/NCShareAdvancePermissionHeader.swift +++ b/iOSClient/Share/Advanced/NCShareAdvancePermissionHeader.swift @@ -3,7 +3,22 @@ // Nextcloud // // Created by T-systems on 10/08/21. -// Copyright © 2021 Marino Faggiana. All rights reserved. +// Copyright © 2022 Henrik Storch. All rights reserved. +// +// Author Henrik Storch <henrik.storch@nextcloud.com> +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. // import UIKit diff --git a/iOSClient/Share/Advanced/ShareCells.swift b/iOSClient/Share/Advanced/NCShareCells.swift index a732a5649..5e9ed8159 100644 --- a/iOSClient/Share/Advanced/ShareCells.swift +++ b/iOSClient/Share/Advanced/NCShareCells.swift @@ -3,38 +3,53 @@ // Nextcloud // // Created by Henrik Storch on 18.03.22. -// Copyright © 2022 Marino Faggiana. All rights reserved. +// Copyright © 2022 Henrik Storch. All rights reserved. +// +// Author Henrik Storch <henrik.storch@nextcloud.com> +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. // import UIKit -protocol ShareCellConfig { +protocol NCShareCellConfig { var title: String { get } - func getCell(for share: TableShareable) -> UITableViewCell - func didSelect(for share: TableShareable) + func getCell(for share: NCTableShareable) -> UITableViewCell + func didSelect(for share: NCTableShareable) } -protocol ToggleCellConfig: ShareCellConfig { - func isOn(for share: TableShareable) -> Bool - func didChange(_ share: TableShareable, to newValue: Bool) +protocol NCToggleCellConfig: NCShareCellConfig { + func isOn(for share: NCTableShareable) -> Bool + func didChange(_ share: NCTableShareable, to newValue: Bool) } -extension ToggleCellConfig { - func getCell(for share: TableShareable) -> UITableViewCell { - return ToggleCell(isOn: isOn(for: share)) +extension NCToggleCellConfig { + func getCell(for share: NCTableShareable) -> UITableViewCell { + return NCShareToggleCell(isOn: isOn(for: share)) } - func didSelect(for share: TableShareable) { + func didSelect(for share: NCTableShareable) { didChange(share, to: !isOn(for: share)) } } -protocol Permission: ToggleCellConfig { +protocol NCPermission: NCToggleCellConfig { static var forDirectory: [Self] { get } static var forFile: [Self] { get } } -enum UserPermission: CaseIterable, Permission { +enum NCUserPermission: CaseIterable, NCPermission { var permissionBitFlag: Int { switch self { case .reshare: return NCGlobal.shared.permissionShareShare @@ -44,17 +59,17 @@ enum UserPermission: CaseIterable, Permission { } } - func didChange(_ share: TableShareable, to newValue: Bool) { + func didChange(_ share: NCTableShareable, to newValue: Bool) { share.permissions ^= permissionBitFlag } - func isOn(for share: TableShareable) -> Bool { + func isOn(for share: NCTableShareable) -> Bool { return (share.permissions & permissionBitFlag) != 0 } case reshare, edit, create, delete - static let forDirectory: [UserPermission] = UserPermission.allCases - static let forFile: [UserPermission] = [.reshare, .edit] + static let forDirectory: [NCUserPermission] = NCUserPermission.allCases + static let forFile: [NCUserPermission] = [.reshare, .edit] var title: String { switch self { @@ -66,8 +81,8 @@ enum UserPermission: CaseIterable, Permission { } } -enum LinkPermission: Permission { - func didChange(_ share: TableShareable, to newValue: Bool) { +enum NCLinkPermission: NCPermission { + func didChange(_ share: NCTableShareable, to newValue: Bool) { guard self != .allowEdit else { // file share.permissions = CCUtility.getPermissionsValue( @@ -104,7 +119,7 @@ enum LinkPermission: Permission { } } - func isOn(for share: TableShareable) -> Bool { + func isOn(for share: NCTableShareable) -> Bool { switch self { case .allowEdit: return CCUtility.isAnyPermission(toEdit: share.permissions) case .viewOnly: return !CCUtility.isAnyPermission(toEdit: share.permissions) && share.permissions != NCGlobal.shared.permissionCreateShare @@ -123,12 +138,12 @@ enum LinkPermission: Permission { } case allowEdit, viewOnly, uploadEdit, fileDrop - static let forDirectory: [LinkPermission] = [.viewOnly, .uploadEdit, .fileDrop] - static let forFile: [LinkPermission] = [.allowEdit] + static let forDirectory: [NCLinkPermission] = [.viewOnly, .uploadEdit, .fileDrop] + static let forFile: [NCLinkPermission] = [.allowEdit] } -enum Advanced: CaseIterable, ShareCellConfig { - func didSelect(for share: TableShareable) { +enum NCShareDetails: CaseIterable, NCShareCellConfig { + func didSelect(for share: NCTableShareable) { switch self { case .hideDownload: share.hideDownload.toggle() case .expirationDate: return @@ -138,13 +153,13 @@ enum Advanced: CaseIterable, ShareCellConfig { } } - func getCell(for share: TableShareable) -> UITableViewCell { + func getCell(for share: NCTableShareable) -> UITableViewCell { switch self { case .hideDownload: - return ToggleCell(isOn: share.hideDownload) + return NCShareToggleCell(isOn: share.hideDownload) case .expirationDate: - return DatePickerTableViewCell(share: share) - case .password: return ToggleCell(isOn: !share.password.isEmpty, customIcons: ("lock", "lock.open")) + return NCShareDateCell(share: share) + case .password: return NCShareToggleCell(isOn: !share.password.isEmpty, customIcons: ("lock", "lock.open")) case .note: let cell = UITableViewCell(style: .value1, reuseIdentifier: "shareNote") cell.detailTextLabel?.text = share.note @@ -168,20 +183,20 @@ enum Advanced: CaseIterable, ShareCellConfig { } case label, hideDownload, expirationDate, password, note - static let forLink: [Advanced] = Advanced.allCases - static let forUser: [Advanced] = [.expirationDate, .note] + static let forLink: [NCShareDetails] = NCShareDetails.allCases + static let forUser: [NCShareDetails] = [.expirationDate, .note] } -struct ShareConfig { - let permissions: [Permission] - let advanced: [Advanced] - let share: TableShareable +struct NCShareConfig { + let permissions: [NCPermission] + let advanced: [NCShareDetails] + let share: NCTableShareable - init(isDirectory: Bool, share: TableShareable) { + init(isDirectory: Bool, share: NCTableShareable) { self.share = share - let type: Permission.Type = share.shareType == NCShareCommon.shared.SHARE_TYPE_LINK ? LinkPermission.self : UserPermission.self + let type: NCPermission.Type = share.shareType == NCShareCommon.shared.SHARE_TYPE_LINK ? NCLinkPermission.self : NCUserPermission.self self.permissions = isDirectory ? type.forDirectory : type.forFile - self.advanced = share.shareType == NCShareCommon.shared.SHARE_TYPE_LINK ? Advanced.forLink : Advanced.forUser + self.advanced = share.shareType == NCShareCommon.shared.SHARE_TYPE_LINK ? NCShareDetails.forLink : NCShareDetails.forUser } func cellFor(indexPath: IndexPath) -> UITableViewCell? { @@ -196,7 +211,7 @@ struct ShareConfig { cellConfig?.didSelect(for: share) } - func config(for indexPath: IndexPath) -> ShareCellConfig? { + func config(for indexPath: IndexPath) -> NCShareCellConfig? { if indexPath.section == 0, indexPath.row < permissions.count { return permissions[indexPath.row] } else if indexPath.section == 1, indexPath.row < advanced.count { @@ -205,7 +220,7 @@ struct ShareConfig { } } -class ToggleCell: UITableViewCell { +class NCShareToggleCell: UITableViewCell { typealias CustomToggleIcon = (onIconName: String?, offIconName: String?) init(isOn: Bool, customIcons: CustomToggleIcon? = nil) { super.init(style: .default, reuseIdentifier: "toggleCell") @@ -223,13 +238,13 @@ class ToggleCell: UITableViewCell { } } -open class DatePickerTableViewCell: UITableViewCell { +open class NCShareDateCell: UITableViewCell { let picker = UIDatePicker() let textField = UITextField() var onReload: (() -> Void)? - init(share: TableShareable) { + init(share: NCTableShareable) { super.init(style: .value1, reuseIdentifier: "shareExpDate") picker.datePickerMode = .date picker.minimumDate = Date() diff --git a/iOSClient/Share/Advanced/NCShareNewUserAddComment.swift b/iOSClient/Share/Advanced/NCShareNewUserAddComment.swift index 722063891..d9b28062c 100644 --- a/iOSClient/Share/Advanced/NCShareNewUserAddComment.swift +++ b/iOSClient/Share/Advanced/NCShareNewUserAddComment.swift @@ -3,8 +3,22 @@ // Nextcloud // // Created by TSI-mc on 21/06/21. -// Copyright © 2021 Marino Faggiana. All rights reserved. -// Copyright © 2021 TSI-mc. All rights reserved. +// Copyright © 2022 Henrik Storch. All rights reserved. +// +// Author Henrik Storch <henrik.storch@nextcloud.com> +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. // import UIKit @@ -21,7 +35,7 @@ class NCShareNewUserAddComment: UIViewController, NCShareDetail { let contentInsets: CGFloat = 16 var onDismiss: (() -> Void)? - public var share: TableShareable! + public var share: NCTableShareable! public var metadata: tableMetadata! override func viewDidLoad() { diff --git a/iOSClient/Share/NCShare+Helper.swift b/iOSClient/Share/NCShare+Helper.swift index 0ff18fa1a..74f179a46 100644 --- a/iOSClient/Share/NCShare+Helper.swift +++ b/iOSClient/Share/NCShare+Helper.swift @@ -3,14 +3,29 @@ // Nextcloud // // Created by Henrik Storch on 19.03.22. -// Copyright © 2022 Marino Faggiana. All rights reserved. +// Copyright © 2022 Henrik Storch. All rights reserved. +// +// Author Henrik Storch <henrik.storch@nextcloud.com> +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. // import UIKit import NCCommunication -extension tableShare: TableShareable { } -protocol TableShareable: AnyObject { +extension tableShare: NCTableShareable { } +protocol NCTableShareable: AnyObject { var shareType: Int { get set } var permissions: Int { get set } @@ -27,7 +42,7 @@ protocol TableShareable: AnyObject { var shareWithDisplayname: String { get set } } -extension TableShareable { +extension NCTableShareable { var expDateString: String? { guard let date = expirationDate else { return nil } let dateFormatter = DateFormatter() @@ -36,7 +51,7 @@ extension TableShareable { } } -class TableShareOptions: TableShareable { +class NCTableShareOptions: NCTableShareable { var shareType: Int var permissions: Int @@ -66,13 +81,13 @@ class TableShareOptions: TableShareable { self.shareWith = sharee.shareWith } - static func shareLink(metadata: tableMetadata, password: String?) -> TableShareOptions { - return TableShareOptions(shareType: NCShareCommon.shared.SHARE_TYPE_LINK, metadata: metadata, password: password) + static func shareLink(metadata: tableMetadata, password: String?) -> NCTableShareOptions { + return NCTableShareOptions(shareType: NCShareCommon.shared.SHARE_TYPE_LINK, metadata: metadata, password: password) } } protocol NCShareDetail { - var share: TableShareable! { get } + var share: NCTableShareable! { get } } extension NCShareDetail where Self: UIViewController { diff --git a/iOSClient/Share/NCShare+NCCellDelegate.swift b/iOSClient/Share/NCShare+NCCellDelegate.swift index 77cf7e3f9..78dfd1074 100644 --- a/iOSClient/Share/NCShare+NCCellDelegate.swift +++ b/iOSClient/Share/NCShare+NCCellDelegate.swift @@ -3,7 +3,22 @@ // Nextcloud // // Created by Henrik Storch on 03.01.22. -// Copyright © 2022 Marino Faggiana. All rights reserved. +// Copyright © 2022 Henrik Storch. All rights reserved. +// +// Author Henrik Storch <henrik.storch@nextcloud.com> +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. // import UIKit diff --git a/iOSClient/Share/NCShare.swift b/iOSClient/Share/NCShare.swift index 092711ba9..2af04b87c 100644 --- a/iOSClient/Share/NCShare.swift +++ b/iOSClient/Share/NCShare.swift @@ -4,6 +4,7 @@ // // Created by Marino Faggiana on 17/07/2019. // Copyright © 2019 Marino Faggiana. All rights reserved. +// Copyright © 2022 Henrik Storch. All rights reserved. // // Author Marino Faggiana <marino.faggiana@nextcloud.com> // Author Henrik Storch <henrik.storch@nextcloud.com> @@ -100,7 +101,7 @@ class NCShare: UIViewController, NCShareNetworkingDelegate, NCSharePagingContent let metadata = self.metadata else { return } self.checkEnforcedPassword { password in advancePermission.networking = self.networking - advancePermission.share = TableShareOptions.shareLink(metadata: metadata, password: password) + advancePermission.share = NCTableShareOptions.shareLink(metadata: metadata, password: password) advancePermission.metadata = self.metadata navigationController.pushViewController(advancePermission, animated: true) } @@ -252,7 +253,7 @@ class NCShare: UIViewController, NCShareNetworkingDelegate, NCSharePagingContent let advancePermission = UIStoryboard(name: "NCShare", bundle: nil).instantiateViewController(withIdentifier: "NCShareAdvancePermission") as? NCShareAdvancePermission, let navigationController = self.navigationController, let metadata = self.metadata else { return } - let shareOptions = TableShareOptions(sharee: sharee, metadata: metadata) + let shareOptions = NCTableShareOptions(sharee: sharee, metadata: metadata) advancePermission.share = shareOptions advancePermission.networking = self.networking advancePermission.metadata = metadata diff --git a/iOSClient/Share/NCShareNetworking.swift b/iOSClient/Share/NCShareNetworking.swift index 103dac312..2df2819d6 100644 --- a/iOSClient/Share/NCShareNetworking.swift +++ b/iOSClient/Share/NCShareNetworking.swift @@ -63,7 +63,7 @@ class NCShareNetworking: NSObject { } } - func createShare(option: TableShareable) { + func createShare(option: NCTableShareable) { // NOTE: Permissions don't work for file drop! // https://github.com/nextcloud/server/issues/17504 @@ -96,7 +96,7 @@ class NCShareNetworking: NSObject { } } - func updateShare(option: TableShareable) { + func updateShare(option: NCTableShareable) { NCUtility.shared.startActivityIndicator(backgroundView: view, blurEffect: false) NCCommunication.shared.updateShare(idShare: option.idShare, password: option.password, expireDate: option.expDateString, permissions: option.permissions, note: option.note, label: option.label, hideDownload: option.hideDownload) { account, share, errorCode, errorDescription in NCUtility.shared.stopActivityIndicator() diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index 073ed9c93..9bd2fd3cc 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -593,7 +593,6 @@ "_new_comment_" = "New comment …"; "_edit_comment_" = "Edit comment"; "_delete_comment_" = "Delete comment"; -"_share_advanced_permissions_" = "Advanced permissions"; "_share_allow_editing_" = "Allow editing"; "_share_read_only_" = "View only"; "_share_editing_" = "Editing"; |