Skip to content

Commit e66bcd6

Browse files
authored
Add new section in settings for Nextcloud apps (#2461)
* Add new section in settings Signed-off-by: Milen Pivchev <[email protected]> * WIP Signed-off-by: Milen Pivchev <[email protected]> * WIP Signed-off-by: Milen Pivchev <[email protected]> * Add new cell/refactor Signed-off-by: Milen Pivchev <[email protected]> * Add url scheme for switching account Signed-off-by: Milen Pivchev <[email protected]> * Add docs Signed-off-by: Milen Pivchev <[email protected]> * Change icon Signed-off-by: Milen Pivchev <[email protected]> * Add colors Signed-off-by: Milen Pivchev <[email protected]> * Add more padding Signed-off-by: Milen Pivchev <[email protected]> * Remove hardcoded urls Signed-off-by: Milen Pivchev <[email protected]> * Refactor Signed-off-by: Milen Pivchev <[email protected]> * Remove unused files Signed-off-by: Milen Pivchev <[email protected]> * Update lint --------- Signed-off-by: Milen Pivchev <[email protected]>
1 parent 10b6da6 commit e66bcd6

File tree

16 files changed

+447
-86
lines changed

16 files changed

+447
-86
lines changed

Nextcloud.xcodeproj/project.pbxproj

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,11 @@
117117
F343A4C02A1E734600DDA874 /* Optional+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F343A4BA2A1E734600DDA874 /* Optional+Extension.swift */; };
118118
F343A4C12A1E734600DDA874 /* Optional+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F343A4BA2A1E734600DDA874 /* Optional+Extension.swift */; };
119119
F3A7AFC62A41AA82001FC89C /* BaseUIXCTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A7AFC52A41AA82001FC89C /* BaseUIXCTestCase.swift */; };
120+
F39298972A3B12CB00509762 /* BaseNCMoreCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F39298962A3B12CB00509762 /* BaseNCMoreCell.swift */; };
121+
F3BB464D2A39ADCC00461F6E /* NCMoreAppSuggestionsCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F3BB464C2A39ADCC00461F6E /* NCMoreAppSuggestionsCell.xib */; };
122+
F3BB464F2A39EBE500461F6E /* NCMoreUserCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3BB464E2A39EBE500461F6E /* NCMoreUserCell.swift */; };
123+
F3BB46522A39EC4900461F6E /* NCMoreAppSuggestionsCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3BB46512A39EC4900461F6E /* NCMoreAppSuggestionsCell.swift */; };
124+
F3BB46542A3A1E9D00461F6E /* CCCellMore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3BB46532A3A1E9D00461F6E /* CCCellMore.swift */; };
120125
F700222C1EC479840080073F /* Custom.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F700222B1EC479840080073F /* Custom.xcassets */; };
121126
F700222D1EC479840080073F /* Custom.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F700222B1EC479840080073F /* Custom.xcassets */; };
122127
F700510122DF63AC003A3356 /* NCShare.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F700510022DF63AC003A3356 /* NCShare.storyboard */; };
@@ -811,6 +816,11 @@
811816
F31F69602A2F907800162F76 /* __Snapshots__ */ = {isa = PBXFileReference; lastKnownFileType = folder; path = __Snapshots__; sourceTree = "<group>"; };
812817
F343A4B22A1E01FF00DDA874 /* PHAsset+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PHAsset+Extension.swift"; sourceTree = "<group>"; };
813818
F343A4BA2A1E734600DDA874 /* Optional+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Optional+Extension.swift"; sourceTree = "<group>"; };
819+
F39298962A3B12CB00509762 /* BaseNCMoreCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseNCMoreCell.swift; sourceTree = "<group>"; };
820+
F3BB464C2A39ADCC00461F6E /* NCMoreAppSuggestionsCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NCMoreAppSuggestionsCell.xib; sourceTree = "<group>"; };
821+
F3BB464E2A39EBE500461F6E /* NCMoreUserCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCMoreUserCell.swift; sourceTree = "<group>"; };
822+
F3BB46512A39EC4900461F6E /* NCMoreAppSuggestionsCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCMoreAppSuggestionsCell.swift; sourceTree = "<group>"; };
823+
F3BB46532A3A1E9D00461F6E /* CCCellMore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CCCellMore.swift; sourceTree = "<group>"; };
814824
F3A7AFC52A41AA82001FC89C /* BaseUIXCTestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseUIXCTestCase.swift; sourceTree = "<group>"; };
815825
F700222B1EC479840080073F /* Custom.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Custom.xcassets; sourceTree = "<group>"; };
816826
F700510022DF63AC003A3356 /* NCShare.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = NCShare.storyboard; sourceTree = "<group>"; };
@@ -1529,6 +1539,19 @@
15291539
path = Advanced;
15301540
sourceTree = "<group>";
15311541
};
1542+
F3BB46502A39EC2D00461F6E /* Cells */ = {
1543+
isa = PBXGroup;
1544+
children = (
1545+
F3BB464C2A39ADCC00461F6E /* NCMoreAppSuggestionsCell.xib */,
1546+
F3BB46512A39EC4900461F6E /* NCMoreAppSuggestionsCell.swift */,
1547+
F7EFC0C5256BC77700461AAD /* NCMoreUserCell.xib */,
1548+
F3BB464E2A39EBE500461F6E /* NCMoreUserCell.swift */,
1549+
F3BB46532A3A1E9D00461F6E /* CCCellMore.swift */,
1550+
F39298962A3B12CB00509762 /* BaseNCMoreCell.swift */,
1551+
);
1552+
path = Cells;
1553+
sourceTree = "<group>";
1554+
};
15321555
C0046CDB2A17B98400D87C9D /* NextcloudUITests */ = {
15331556
isa = PBXGroup;
15341557
children = (
@@ -2265,7 +2288,7 @@
22652288
F7CB68942541670D0050EC94 /* More */ = {
22662289
isa = PBXGroup;
22672290
children = (
2268-
F7EFC0C5256BC77700461AAD /* NCMoreUserCell.xib */,
2291+
F3BB46502A39EC2D00461F6E /* Cells */,
22692292
F7CB68992541676B0050EC94 /* NCMore.storyboard */,
22702293
F73F537E1E929C8500F8678D /* NCMore.swift */,
22712294
);
@@ -3102,6 +3125,7 @@
31023125
F7362A1F220C853A005101B5 /* LaunchScreen.storyboard in Resources */,
31033126
F77444F622281649000D5EB0 /* NCGridMediaCell.xib in Resources */,
31043127
F78ACD4421903CF20088454D /* NCListCell.xib in Resources */,
3128+
F3BB464D2A39ADCC00461F6E /* NCMoreAppSuggestionsCell.xib in Resources */,
31053129
F7F4F10727ECDBDB008676F9 /* Inconsolata-Black.ttf in Resources */,
31063130
F761856D29E98543006EB3B0 /* NCIntroCollectionViewCell.xib in Resources */,
31073131
F78ACD4621903D010088454D /* NCGridCell.xib in Resources */,
@@ -3597,6 +3621,7 @@
35973621
F7B8CD91261AF3F7007C1359 /* NCNetworkingChunkedUpload.swift in Sources */,
35983622
F757CC8D29E82D0500F31428 /* NCGroupfolders.swift in Sources */,
35993623
F760329F252F0F8E0015A421 /* NCTransferCell.swift in Sources */,
3624+
F3BB46542A3A1E9D00461F6E /* CCCellMore.swift in Sources */,
36003625
AF68326A27BE65A90010BF0B /* NCMenuAction.swift in Sources */,
36013626
F7682FE023C36B0500983A04 /* NCMainTabBar.swift in Sources */,
36023627
F7A0D1352591FBC5008F8A13 /* String+Extension.swift in Sources */,
@@ -3606,6 +3631,7 @@
36063631
F70460522499061800BB98A7 /* NotificationCenter+MainThread.swift in Sources */,
36073632
F78F74362163781100C2ADAD /* NCTrash.swift in Sources */,
36083633
AF817EF1274BC781009ED85B /* NCUserBaseUrl.swift in Sources */,
3634+
F39298972A3B12CB00509762 /* BaseNCMoreCell.swift in Sources */,
36093635
AF2D7C7C2742556F00ADF566 /* NCShareLinkCell.swift in Sources */,
36103636
F7E41316294A19B300839300 /* UIView+Extension.swift in Sources */,
36113637
F31F69502A2F707E00162F76 /* SwiftUIView+Extensions.swift in Sources */,
@@ -3663,6 +3689,7 @@
36633689
F76D364628A4F8BF00214537 /* NCActivityIndicator.swift in Sources */,
36643690
F7020FCE2233D7F700B7297D /* NCCreateFormUploadVoiceNote.swift in Sources */,
36653691
F7134186259747BA00768D21 /* NCPushNotification.m in Sources */,
3692+
F3BB464F2A39EBE500461F6E /* NCMoreUserCell.swift in Sources */,
36663693
F726EEEC1FED1C820030B9C8 /* NCEndToEndInitialize.swift in Sources */,
36673694
F79A65C62191D95E00FF6DCC /* NCSelect.swift in Sources */,
36683695
F75D19E325EFE09000D74598 /* NCTrash+Menu.swift in Sources */,
@@ -3692,6 +3719,7 @@
36923719
F749B64A297B0CBB00087535 /* NCManageDatabase+Share.swift in Sources */,
36933720
F7C9555521F0C5470024296E /* NCActivity.swift in Sources */,
36943721
F7725A60251F33BB00D125E0 /* NCFiles.swift in Sources */,
3722+
F3BB46522A39EC4900461F6E /* NCMoreAppSuggestionsCell.swift in Sources */,
36953723
F704B5E52430AA8000632F5F /* NCCreateFormUploadConflict.swift in Sources */,
36963724
F765608F23BF813600765969 /* NCContentPresenter.swift in Sources */,
36973725
F343A4BB2A1E734600DDA874 /* Optional+Extension.swift in Sources */,

iOSClient/AppDelegate.swift

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -947,6 +947,26 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
947947
}
948948
}
949949
return true
950+
951+
/*
952+
Example:
953+
nextcloud://open-and-switch-account?user=marinofaggiana&url=https://cloud.nextcloud.com
954+
*/
955+
956+
} else if !account.isEmpty && scheme == NCGlobal.shared.appScheme && action == "open-and-switch-account" {
957+
guard let urlComponents = URLComponents(url: url, resolvingAgainstBaseURL: false) else { return false }
958+
let queryItems = urlComponents.queryItems
959+
960+
guard let userScheme = CCUtility.value(forKey: "user", fromQueryItems: queryItems) else { return false }
961+
guard let urlScheme = CCUtility.value(forKey: "url", fromQueryItems: queryItems) else { return false }
962+
963+
// If the account doesn't exist, return false which will open the app without switching
964+
if getMatchedAccount(userId: userScheme, url: urlScheme) == nil {
965+
return false
966+
}
967+
968+
// Otherwise open the app and switch accounts
969+
return true
950970
} else {
951971
let applicationHandle = NCApplicationHandle()
952972
let isHandled = applicationHandle.applicationOpenURL(url)
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"images" : [
3+
{
4+
"filename" : "more-apps.svg",
5+
"idiom" : "universal"
6+
}
7+
],
8+
"info" : {
9+
"author" : "xcode",
10+
"version" : 1
11+
},
12+
"properties" : {
13+
"template-rendering-intent" : "template"
14+
}
15+
}
Lines changed: 1 addition & 0 deletions
Loading
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"images" : [
3+
{
4+
"filename" : "notes.svg",
5+
"idiom" : "universal"
6+
}
7+
],
8+
"info" : {
9+
"author" : "xcode",
10+
"version" : 1
11+
},
12+
"properties" : {
13+
"template-rendering-intent" : "template"
14+
}
15+
}
Lines changed: 1 addition & 0 deletions
Loading
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"images" : [
3+
{
4+
"filename" : "talk.png",
5+
"idiom" : "universal"
6+
}
7+
],
8+
"info" : {
9+
"author" : "xcode",
10+
"version" : 1
11+
},
12+
"properties" : {
13+
"template-rendering-intent" : "template"
14+
}
15+
}
25.4 KB
Loading
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
//
2+
// BaseNCMoreCell.swift
3+
// Nextcloud
4+
//
5+
// Created by Milen on 15.06.23.
6+
// Copyright © 2023 Marino Faggiana. All rights reserved.
7+
//
8+
9+
import Foundation
10+
11+
class BaseNCMoreCell: UITableViewCell {
12+
let selectionColor: UIView = UIView()
13+
let defaultCornerRadius: CGFloat = 10.0
14+
15+
override var frame: CGRect {
16+
get {
17+
return super.frame
18+
}
19+
set (newFrame) {
20+
var frame = newFrame
21+
let newWidth = frame.width * 0.90
22+
let space = (frame.width - newWidth) / 2
23+
frame.size.width = newWidth
24+
frame.origin.x += space
25+
super.frame = frame
26+
}
27+
}
28+
29+
override func awakeFromNib() {
30+
super.awakeFromNib()
31+
32+
selectedBackgroundView = selectionColor
33+
backgroundColor = .secondarySystemGroupedBackground
34+
layer.cornerRadius = defaultCornerRadius
35+
}
36+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
//
2+
// CCCellMore.swift
3+
// Nextcloud
4+
//
5+
// Created by Milen on 14.06.23.
6+
// Copyright © 2023 Marino Faggiana. All rights reserved.
7+
//
8+
9+
import Foundation
10+
11+
class CCCellMore: BaseNCMoreCell {
12+
@IBOutlet weak var labelText: UILabel!
13+
@IBOutlet weak var imageIcon: UIImageView!
14+
@IBOutlet weak var separator: UIView!
15+
@IBOutlet weak var separatorHeigth: NSLayoutConstraint!
16+
17+
static let reuseIdentifier = "CCCellMore"
18+
}

0 commit comments

Comments
 (0)