Skip to content

Commit 97fec70

Browse files
NMC 1997 - Sharing customisation changes
1 parent 502a873 commit 97fec70

29 files changed

Lines changed: 1335 additions & 1296 deletions

iOSClient/Activity/NCActivity.swift

Lines changed: 93 additions & 67 deletions
Large diffs are not rendered by default.

iOSClient/Extensions/DateFormatter+Extension.swift

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,7 @@ extension DateFormatter {
2828
static let shareExpDate: DateFormatter = {
2929
let dateFormatter = DateFormatter()
3030
dateFormatter.formatterBehavior = .behavior10_4
31-
// dateFormatter.locale = Locale.current
3231
dateFormatter.dateStyle = .medium
33-
dateFormatter.dateFormat = NCShareAdvancePermission.displayDateFormat
3432
return dateFormatter
3533
}()
3634

@@ -96,15 +94,3 @@ extension DateFormatter {
9694
}
9795

9896
}
99-
100-
extension Date {
101-
static var tomorrow: Date { return Date().dayAfter }
102-
static var today: Date {return Date()}
103-
static var dayAfterYear: Date { return Date().dateAfterYear }
104-
var dayAfter: Date {
105-
return Calendar.current.date(byAdding: .day, value: 1, to: Date())!
106-
}
107-
var dateAfterYear: Date {
108-
return Calendar.current.date(byAdding: .year, value: 1, to: Date())!
109-
}
110-
}

iOSClient/Extensions/UIButton+Extension.swift

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,12 @@ extension UIButton {
2525
}
2626

2727
func hideSpinnerAndShowButton() {
28-
let spinnerTag = Int(bitPattern: Unmanaged.passUnretained(self).toOpaque())
29-
let spinner = self.superview?.subviews.first(where: { view -> Bool in
30-
return view.isKind(of: UIActivityIndicatorView.self) && view.tag == spinnerTag
31-
})
28+
let spinnerTag = Int(bitPattern: Unmanaged.passUnretained(self).toOpaque())
29+
let spinner = self.superview?.subviews.first(where: { view -> Bool in
30+
return view.isKind(of: UIActivityIndicatorView.self) && view.tag == spinnerTag
31+
})
3232

33-
spinner?.removeFromSuperview()
34-
self.isHidden = false
35-
}
36-
37-
func setBackgroundColor(_ color: UIColor, for forState: UIControl.State) {
38-
UIGraphicsBeginImageContext(CGSize(width: 1, height: 1))
39-
UIGraphicsGetCurrentContext()!.setFillColor(color.cgColor)
40-
UIGraphicsGetCurrentContext()!.fill(CGRect(x: 0, y: 0, width: 1, height: 1))
41-
let colorImage = UIGraphicsGetImageFromCurrentImageContext()
42-
UIGraphicsEndImageContext()
43-
self.setBackgroundImage(colorImage, for: forState)
44-
}
33+
spinner?.removeFromSuperview()
34+
self.isHidden = false
35+
}
4536
}

iOSClient/Extensions/UIToolbar+Extension.swift

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ extension UIToolbar {
3737
buttons.append(clearButton)
3838
}
3939
buttons.append(UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.flexibleSpace, target: nil, action: nil))
40-
let doneButton = UIBarButtonItem(title: NSLocalizedString("_done_", comment: ""), style: .done) {
40+
let doneButton = UIBarButtonItem(title: NSLocalizedString("_done_", comment: ""), style: .plain) {
4141
onDone()
4242
}
4343
buttons.append(doneButton)
@@ -58,20 +58,6 @@ extension UIToolbar {
5858
])
5959
return view
6060
}
61-
62-
static func doneToolbar(completion: @escaping () -> Void) -> UIToolbar {
63-
let doneToolbar: UIToolbar = UIToolbar(frame: CGRect.init(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 50))
64-
doneToolbar.barStyle = .default
65-
66-
let flexSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
67-
let done: UIBarButtonItem = UIBarButtonItem(title: NSLocalizedString("_done_", comment: ""), style: .done) {
68-
completion()
69-
}
70-
let items = [flexSpace, done]
71-
doneToolbar.items = items
72-
doneToolbar.sizeToFit()
73-
return doneToolbar
74-
}
7561
}
7662

7763
// https://stackoverflow.com/a/67985180/9506784

iOSClient/Extensions/UIView+Extension.swift

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,6 @@
2424
import Foundation
2525
import UIKit
2626

27-
enum VerticalLocation: String {
28-
case bottom
29-
case top
30-
}
31-
3227
extension UIView {
3328

3429
// Source
@@ -116,6 +111,7 @@ extension UIView {
116111
case .top:
117112
addShadow(offset: CGSize(width: 0, height: -height), color: color, opacity: opacity, radius: radius)
118113
}
114+
return nil
119115
}
120116

121117
func addBlur(style: UIBlurEffect.Style, alpha: CGFloat = 1.0) {
@@ -144,12 +140,4 @@ extension UIView {
144140
blurView.bottomAnchor.constraint(equalTo: bottomAnchor)
145141
])
146142
}
147-
148-
func addShadow(offset: CGSize, color: UIColor = .black, opacity: Float = 0.5, radius: CGFloat = 5.0) {
149-
self.layer.masksToBounds = false
150-
self.layer.shadowColor = color.cgColor
151-
self.layer.shadowOffset = offset
152-
self.layer.shadowOpacity = opacity
153-
self.layer.shadowRadius = radius
154-
}
155143
}

iOSClient/Menu/NCShare+Menu.swift

Lines changed: 59 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,10 @@ extension NCShare {
3434
actions.append(
3535
NCMenuAction(
3636
title: NSLocalizedString("_open_in_", comment: ""),
37-
icon: utility.loadImage(named: "viewInFolder").imageColor(NCBrandColor.shared.brandElement),
37+
icon: utility.loadImage(named: "open_file", colors: [NCBrandColor.shared.brandElement]),
38+
sender: sender,
3839
action: { _ in
39-
NCShareCommon().copyLink(link: share.url, viewController: self, sender: sender)
40+
NCShareCommon.copyLink(link: share.url, viewController: self, sender: sender)
4041
}
4142
)
4243
)
@@ -46,15 +47,16 @@ extension NCShare {
4647
NCMenuAction(
4748
// title: NSLocalizedString("_details_", comment: ""),
4849
// icon: utility.loadImage(named: "pencil", colors: [NCBrandColor.shared.iconImageColor]),
49-
// accessibilityIdentifier: "shareMenu/details",
5050
title: NSLocalizedString("_advance_permissions_", comment: ""),
51-
icon: utility.loadImage(named: "rename").imageColor(NCBrandColor.shared.brandElement),
51+
icon: utility.loadImage(named: "rename", colors: [NCBrandColor.shared.brandElement]),
52+
accessibilityIdentifier: "shareMenu/details",
53+
sender: sender,
5254
action: { _ in
5355
guard
5456
let advancePermission = UIStoryboard(name: "NCShare", bundle: nil).instantiateViewController(withIdentifier: "NCShareAdvancePermission") as? NCShareAdvancePermission,
5557
let navigationController = self.navigationController, !share.isInvalidated else { return }
5658
advancePermission.networking = self.networking
57-
advancePermission.share = share
59+
advancePermission.share = tableShare(value: share)
5860
advancePermission.oldTableShare = tableShare(value: share)
5961
advancePermission.metadata = self.metadata
6062

@@ -66,18 +68,19 @@ extension NCShare {
6668
}
6769
)
6870
)
69-
71+
7072
if sendMail {
7173
actions.append(
7274
NCMenuAction(
7375
title: NSLocalizedString("_send_new_email_", comment: ""),
74-
icon: NCUtility().loadImage(named: "email").imageColor(NCBrandColor.shared.brandElement),
76+
icon: utility.loadImage(named: "email", colors: [NCBrandColor.shared.brandElement]),
77+
sender: sender,
7578
action: { menuAction in
7679
let storyboard = UIStoryboard(name: "NCShare", bundle: nil)
7780
guard let viewNewUserComment = storyboard.instantiateViewController(withIdentifier: "NCShareNewUserAddComment") as? NCShareNewUserAddComment else { return }
7881
viewNewUserComment.metadata = self.metadata
7982
viewNewUserComment.share = tableShare(value: share)
80-
viewNewUserComment.networking = self.networking
83+
// viewNewUserComment.networking = self.networking
8184
self.navigationController?.pushViewController(viewNewUserComment, animated: true)
8285
}
8386
)
@@ -87,15 +90,16 @@ extension NCShare {
8790
actions.append(
8891
NCMenuAction(
8992
title: NSLocalizedString("_share_unshare_", comment: ""),
90-
icon: utility.loadImage(named: "trash").imageColor(NCBrandColor.shared.brandElement),
93+
icon: utility.loadImage(named: "trashIcon", colors: [NCBrandColor.shared.brandElement]),
94+
sender: sender,
9195
action: { _ in
9296
Task {
9397
if share.shareType != NKShare.ShareType.publicLink.rawValue, let metadata = self.metadata, metadata.e2eEncrypted && capabilities.e2EEApiVersion == NCGlobal.shared.e2eeVersionV20 {
9498
if await NCNetworkingE2EE().isInUpload(account: metadata.account, serverUrl: metadata.serverUrlFileName) {
9599
let error = NKError(errorCode: NCGlobal.shared.errorE2EEUploadInProgress, errorDescription: NSLocalizedString("_e2e_in_upload_", comment: ""))
96100
return NCContentPresenter().showInfo(error: error)
97101
}
98-
let error = await NCNetworkingE2EE().uploadMetadata(serverUrl: serverUrl, addUserId: nil, removeUserId: share.shareWith, account: metadata.account)
102+
let error = await NCNetworkingE2EE().uploadMetadata(serverUrl: metadata.serverUrlFileName, addUserId: nil, removeUserId: share.shareWith, account: metadata.account)
99103
if error != .success {
100104
return NCContentPresenter().showError(error: error)
101105
}
@@ -106,40 +110,56 @@ extension NCShare {
106110
)
107111
)
108112

109-
self.presentMenu(with: actions)
113+
self.presentMenu(with: actions, sender: sender)
110114
}
111115

112-
func toggleUserPermissionMenu(isDirectory: Bool, tableShare: tableShare) {
116+
func toggleQuickPermissionsMenu(isDirectory: Bool, share: tableShare, sender: Any?) {
113117
var actions = [NCMenuAction]()
114-
let permissions = NCPermissions()
115118

116-
actions.append(
117-
NCMenuAction(
119+
actions.append(contentsOf:
120+
[NCMenuAction(
118121
title: NSLocalizedString("_share_read_only_", comment: ""),
119122
icon: utility.loadImage(named: "eye", colors: [NCBrandColor.shared.iconImageColor]),
120123
selected: share.permissions == (NKShare.Permission.read.rawValue + NKShare.Permission.share.rawValue) || share.permissions == NKShare.Permission.read.rawValue,
121124
on: false,
125+
sender: sender,
122126
action: { _ in
123-
let canShare = permissions.isPermissionToCanShare(tableShare.permissions)
124-
let permissions = permissions.getPermission(canEdit: false, canCreate: false, canChange: false, canDelete: false, canShare: canShare, isDirectory: isDirectory)
125-
self.updateSharePermissions(share: tableShare, permissions: permissions)
127+
let permissions = NCSharePermissions.getPermissionValue(canCreate: false, canEdit: false, canDelete: false, canShare: false, isDirectory: isDirectory)
128+
self.updateSharePermissions(share: share, permissions: permissions)
126129
}
127-
)
128-
)
129-
130-
actions.append(
130+
),
131131
NCMenuAction(
132-
// title: isDirectory ? NSLocalizedString("_share_allow_upload_", comment: "") : NSLocalizedString("_share_editing_", comment: ""),
133132
title: NSLocalizedString("_share_editing_", comment: ""),
134-
icon: UIImage(),
135-
selected: hasUploadPermission(tableShare: tableShare),
133+
icon: utility.loadImage(named: "pencil", colors: [NCBrandColor.shared.iconImageColor]),
134+
selected: hasUploadPermission(tableShare: share),
136135
on: false,
136+
sender: sender,
137137
action: { _ in
138-
let canShare = permissions.isPermissionToCanShare(tableShare.permissions)
139-
let permissions = permissions.getPermission(canEdit: true, canCreate: true, canChange: true, canDelete: true, canShare: canShare, isDirectory: isDirectory)
140-
self.updateSharePermissions(share: tableShare, permissions: permissions)
138+
let permissions = NCSharePermissions.getPermissionValue(canCreate: true, canEdit: true, canDelete: true, canShare: true, isDirectory: isDirectory)
139+
self.updateSharePermissions(share: share, permissions: permissions)
141140
}
142-
)
141+
),
142+
// NCMenuAction(
143+
// title: NSLocalizedString("_custom_permissions_", comment: ""),
144+
// icon: utility.loadImage(named: "ellipsis", colors: [NCBrandColor.shared.iconImageColor]),
145+
// sender: sender,
146+
// action: { _ in
147+
// guard
148+
// let advancePermission = UIStoryboard(name: "NCShare", bundle: nil).instantiateViewController(withIdentifier: "NCShareAdvancePermission") as? NCShareAdvancePermission,
149+
// let navigationController = self.navigationController, !share.isInvalidated else { return }
150+
// advancePermission.networking = self.networking
151+
// advancePermission.share = tableShare(value: share)
152+
// advancePermission.oldTableShare = tableShare(value: share)
153+
// advancePermission.metadata = self.metadata
154+
//
155+
// if let downloadLimit = try? self.database.getDownloadLimit(byAccount: self.metadata.account, shareToken: share.token) {
156+
// advancePermission.downloadLimit = .limited(limit: downloadLimit.limit, count: downloadLimit.count)
157+
// }
158+
//
159+
// navigationController.pushViewController(advancePermission, animated: true)
160+
// }
161+
// )
162+
]
143163
)
144164

145165
if isDirectory && (share.shareType == NKShare.ShareType.publicLink.rawValue /* public link */ || share.shareType == NKShare.ShareType.email.rawValue) {
@@ -155,17 +175,16 @@ extension NCShare {
155175
}
156176
), at: 2)
157177
}
158-
159-
self.presentMenu(with: actions)
178+
179+
self.presentMenu(with: actions, sender: sender)
160180
}
161181

162182
fileprivate func hasUploadPermission(tableShare: tableShare) -> Bool {
163-
let permissions = NCPermissions()
164183
let uploadPermissions = [
165-
permissions.permissionMaxFileShare,
166-
permissions.permissionMaxFolderShare,
167-
permissions.permissionDefaultFileRemoteShareNoSupportShareOption,
168-
permissions.permissionDefaultFolderRemoteShareNoSupportShareOption]
184+
NCSharePermissions.permissionMaxFileShare,
185+
NCSharePermissions.permissionMaxFolderShare,
186+
NCSharePermissions.permissionDefaultFileRemoteShareNoSupportShareOption,
187+
NCSharePermissions.permissionDefaultFolderRemoteShareNoSupportShareOption]
169188
return uploadPermissions.contains(tableShare.permissions)
170189
}
171190

@@ -179,8 +198,11 @@ extension NCShare {
179198
if let model = try database.getDownloadLimit(byAccount: metadata.account, shareToken: updatedShare.token) {
180199
downloadLimit = .limited(limit: model.limit, count: model.count)
181200
}
201+
if let model = try database.getDownloadLimit(byAccount: metadata.account, shareToken: updatedShare.token) {
202+
downloadLimit = .limited(limit: model.limit, count: model.count)
203+
}
182204
} catch {
183-
NextcloudKit.shared.nkCommonInstance.writeLog("[ERROR] Failed to get download limit from database!")
205+
nkLog(error: "Failed to get download limit from database!")
184206
return
185207
}
186208

0 commit comments

Comments
 (0)