Skip to content

Commit 60f9f92

Browse files
Versione 6.1.0 (#3140)
1 parent 574ab7e commit 60f9f92

File tree

146 files changed

+269
-162
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

146 files changed

+269
-162
lines changed

Brand/Database.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,4 @@ import Foundation
2626
// Database Realm
2727
//
2828
let databaseName = "nextcloud.realm"
29-
let databaseSchemaVersion: UInt64 = 365
29+
let databaseSchemaVersion: UInt64 = 366

Nextcloud.xcodeproj/project.pbxproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5682,7 +5682,7 @@
56825682
CLANG_WARN_UNREACHABLE_CODE = YES;
56835683
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
56845684
COPY_PHASE_STRIP = NO;
5685-
CURRENT_PROJECT_VERSION = 36;
5685+
CURRENT_PROJECT_VERSION = 4;
56865686
DEBUG_INFORMATION_FORMAT = dwarf;
56875687
DEVELOPMENT_TEAM = NKUJUXUJ3B;
56885688
ENABLE_STRICT_OBJC_MSGSEND = YES;
@@ -5709,7 +5709,7 @@
57095709
"@executable_path/Frameworks",
57105710
"@executable_path/../../Frameworks",
57115711
);
5712-
MARKETING_VERSION = 6.0.0;
5712+
MARKETING_VERSION = 6.1.0;
57135713
ONLY_ACTIVE_ARCH = YES;
57145714
OTHER_CFLAGS = "-v";
57155715
OTHER_LDFLAGS = "";
@@ -5748,7 +5748,7 @@
57485748
CLANG_WARN_UNREACHABLE_CODE = YES;
57495749
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
57505750
COPY_PHASE_STRIP = NO;
5751-
CURRENT_PROJECT_VERSION = 36;
5751+
CURRENT_PROJECT_VERSION = 4;
57525752
DEVELOPMENT_TEAM = NKUJUXUJ3B;
57535753
ENABLE_STRICT_OBJC_MSGSEND = YES;
57545754
ENABLE_TESTABILITY = YES;
@@ -5772,7 +5772,7 @@
57725772
"@executable_path/Frameworks",
57735773
"@executable_path/../../Frameworks",
57745774
);
5775-
MARKETING_VERSION = 6.0.0;
5775+
MARKETING_VERSION = 6.1.0;
57765776
ONLY_ACTIVE_ARCH = YES;
57775777
OTHER_CFLAGS = "-v";
57785778
OTHER_LDFLAGS = "";

Share/NCShareExtension+Files.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@ import NextcloudKit
2929
extension NCShareExtension {
3030
@objc func reloadDatasource(withLoadFolder: Bool) {
3131
let predicate = NSPredicate(format: "account == %@ AND serverUrl == %@ AND directory == true", session.account, serverUrl)
32-
let results = self.database.getResultsMetadatasPredicate(predicate, layoutForView: NCDBLayoutForView())
32+
let metadatas = self.database.getResultsMetadatasPredicate(predicate, layoutForView: NCDBLayoutForView())
3333

34-
self.dataSource = NCCollectionViewDataSource(results: results)
34+
self.dataSource = NCCollectionViewDataSource(metadatas: metadatas)
3535

3636
if withLoadFolder {
3737
loadFolder()

iOSClient/Color/NCColorPicker.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ class NCColorPicker: UIViewController {
212212
func updateColor(hexColor: String?) {
213213
if let metadata = metadata {
214214
let serverUrl = metadata.serverUrl + "/" + metadata.fileName
215-
NCManageDatabase.shared.setDirectory(serverUrl: serverUrl, colorFolder: hexColor, metadata: metadata)
215+
NCManageDatabase.shared.updateDirectoryColorFolder(hexColor, metadata: metadata, serverUrl: serverUrl)
216216
self.dismiss(animated: true)
217217
NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterReloadDataSource, userInfo: ["serverUrl": metadata.serverUrl, "clearDataSource": true])
218218
}

iOSClient/Data/NCManageDatabase+Account.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ class tableAccount: Object {
3939
@objc dynamic var autoUploadFull: Bool = false
4040
@objc dynamic var autoUploadImage: Bool = false
4141
@objc dynamic var autoUploadVideo: Bool = false
42+
@objc dynamic var autoUploadFavoritesOnly: Bool = false
4243
@objc dynamic var autoUploadWWAnPhoto: Bool = false
4344
@objc dynamic var autoUploadWWAnVideo: Bool = false
4445
@objc dynamic var backend = ""

iOSClient/Data/NCManageDatabase+Directory.swift

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -76,16 +76,6 @@ extension NCManageDatabase {
7676
}
7777
}
7878

79-
func addDirectory(directory: tableDirectory, metadata: tableMetadata) {
80-
directory.account = metadata.account
81-
directory.e2eEncrypted = metadata.e2eEncrypted
82-
directory.favorite = metadata.favorite
83-
directory.fileId = metadata.fileId
84-
directory.ocId = metadata.ocId
85-
directory.permissions = metadata.permissions
86-
directory.richWorkspace = metadata.richWorkspace
87-
}
88-
8979
func deleteDirectoryAndSubDirectory(serverUrl: String, account: String) {
9080
#if !EXTENSION
9181
DispatchQueue.main.async {
@@ -101,11 +91,15 @@ extension NCManageDatabase {
10191
do {
10292
let realm = try Realm()
10393
let results = realm.objects(tableDirectory.self).filter("account == %@ AND serverUrl BEGINSWITH %@", account, serverUrl)
104-
for result in results {
105-
self.deleteMetadata(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", result.account, result.serverUrl))
106-
self.deleteLocalFileOcId(result.ocId)
107-
}
10894
try realm.write {
95+
for result in results {
96+
let metadatas = realm.objects(tableMetadata.self).filter("account == %@ AND serverUrl == %@", account, result.serverUrl)
97+
for metadata in metadatas {
98+
let localFile = realm.objects(tableLocalFile.self).filter("ocId == %@", metadata.ocId)
99+
realm.delete(localFile)
100+
}
101+
realm.delete(metadatas)
102+
}
109103
realm.delete(results)
110104
}
111105
} catch let error {
@@ -216,9 +210,17 @@ extension NCManageDatabase {
216210
result.offline = offline
217211
} else {
218212
let directory = tableDirectory()
213+
214+
directory.account = metadata.account
219215
directory.serverUrl = serverUrl
220216
directory.offline = offline
221-
addDirectory(directory: directory, metadata: metadata)
217+
directory.e2eEncrypted = metadata.e2eEncrypted
218+
directory.favorite = metadata.favorite
219+
directory.fileId = metadata.fileId
220+
directory.ocId = metadata.ocId
221+
directory.permissions = metadata.permissions
222+
directory.richWorkspace = metadata.richWorkspace
223+
222224
realm.add(directory, update: .all)
223225
}
224226
}
@@ -239,8 +241,7 @@ extension NCManageDatabase {
239241
}
240242
}
241243

242-
@discardableResult
243-
func setDirectory(serverUrl: String, richWorkspace: String?, account: String) -> tableDirectory? {
244+
func updateDirectoryRichWorkspace(_ richWorkspace: String?, account: String, serverUrl: String) {
244245
var result: tableDirectory?
245246

246247
do {
@@ -252,25 +253,27 @@ extension NCManageDatabase {
252253
} catch let error {
253254
NextcloudKit.shared.nkCommonInstance.writeLog("[ERROR] Could not write to database: \(error)")
254255
}
255-
256-
if let result = result {
257-
return tableDirectory.init(value: result)
258-
} else {
259-
return nil
260-
}
261256
}
262257

263-
func setDirectory(serverUrl: String, colorFolder: String?, metadata: tableMetadata) {
258+
func updateDirectoryColorFolder(_ colorFolder: String?, metadata: tableMetadata, serverUrl: String) {
264259
do {
265260
let realm = try Realm()
266261
try realm.write {
267262
if let result = realm.objects(tableDirectory.self).filter("account == %@ AND serverUrl == %@", metadata.account, serverUrl).first {
268263
result.colorFolder = colorFolder
269264
} else {
270265
let directory = tableDirectory()
266+
267+
directory.account = metadata.account
271268
directory.serverUrl = serverUrl
272269
directory.colorFolder = colorFolder
273-
addDirectory(directory: directory, metadata: metadata)
270+
directory.e2eEncrypted = metadata.e2eEncrypted
271+
directory.favorite = metadata.favorite
272+
directory.fileId = metadata.fileId
273+
directory.ocId = metadata.ocId
274+
directory.permissions = metadata.permissions
275+
directory.richWorkspace = metadata.richWorkspace
276+
274277
realm.add(directory)
275278
}
276279
}

iOSClient/Data/NCManageDatabase+Metadata.swift

Lines changed: 50 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -564,18 +564,33 @@ extension NCManageDatabase {
564564

565565
// MARK: - Set
566566

567-
@discardableResult
568-
func addMetadata(_ metadata: tableMetadata) -> tableMetadata? {
567+
func createMetadata(_ metadata: tableMetadata) -> tableMetadata? {
569568
do {
570569
let realm = try Realm()
570+
var managedMetadata: tableMetadata?
571571
try realm.write {
572-
realm.add(tableMetadata(value: metadata), update: .all)
572+
managedMetadata = realm.create(tableMetadata.self, value: metadata, update: .all)
573+
}
574+
if let managedMetadata {
575+
return tableMetadata(value: managedMetadata)
576+
}
577+
} catch let error {
578+
NextcloudKit.shared.nkCommonInstance.writeLog("[ERROR] Could not write to database: \(error)")
579+
}
580+
581+
return nil
582+
}
583+
584+
func addMetadata(_ metadata: tableMetadata) {
585+
let metadata = tableMetadata(value: metadata)
586+
do {
587+
let realm = try Realm()
588+
try realm.write {
589+
realm.add(metadata, update: .all)
573590
}
574591
} catch let error {
575592
NextcloudKit.shared.nkCommonInstance.writeLog("[ERROR] Could not write to database: \(error)")
576-
return nil
577593
}
578-
return tableMetadata(value: metadata)
579594
}
580595

581596
func addMetadatas(_ metadatas: [tableMetadata]) {
@@ -1046,22 +1061,45 @@ extension NCManageDatabase {
10461061

10471062
// MARK: - GetResult(s)Metadata
10481063

1049-
func getResultsMetadatasPredicate(_ predicate: NSPredicate, layoutForView: NCDBLayoutForView?) -> Results<tableMetadata>? {
1064+
func getResultsMetadatasPredicate(_ predicate: NSPredicate, layoutForView: NCDBLayoutForView?) -> [tableMetadata] {
10501065
do {
10511066
let realm = try Realm()
1052-
var results = realm.objects(tableMetadata.self).filter(predicate)
1067+
var results = realm.objects(tableMetadata.self).filter(predicate).freeze()
10531068
if let layoutForView {
1054-
if layoutForView.directoryOnTop {
1055-
results = results.sorted(byKeyPath: layoutForView.sort, ascending: layoutForView.ascending).sorted(byKeyPath: "directory", ascending: false).sorted(byKeyPath: "favorite", ascending: false)
1069+
if layoutForView.sort == "fileName" {
1070+
let sortedResults = results.sorted {
1071+
// 1. favorite order
1072+
if $0.favorite == $1.favorite {
1073+
// 2. directory order TOP
1074+
if layoutForView.directoryOnTop {
1075+
if $0.directory == $1.directory {
1076+
// 3. natural fileName
1077+
return $0.fileNameView.localizedStandardCompare($1.fileNameView) == .orderedAscending
1078+
} else {
1079+
return $0.directory && !$1.directory
1080+
}
1081+
} else {
1082+
return $0.fileNameView.localizedStandardCompare($1.fileNameView) == .orderedAscending
1083+
}
1084+
} else {
1085+
return $0.favorite && !$1.favorite
1086+
}
1087+
}
1088+
return sortedResults
10561089
} else {
1057-
results = results.sorted(byKeyPath: layoutForView.sort, ascending: layoutForView.ascending).sorted(byKeyPath: "favorite", ascending: false)
1090+
if layoutForView.directoryOnTop {
1091+
results = results.sorted(byKeyPath: layoutForView.sort, ascending: layoutForView.ascending).sorted(byKeyPath: "directory", ascending: false).sorted(byKeyPath: "favorite", ascending: false)
1092+
} else {
1093+
results = results.sorted(byKeyPath: layoutForView.sort, ascending: layoutForView.ascending).sorted(byKeyPath: "favorite", ascending: false)
1094+
}
10581095
}
10591096
}
1060-
return results
1097+
return Array(results)
1098+
10611099
} catch let error as NSError {
10621100
NextcloudKit.shared.nkCommonInstance.writeLog("[ERROR] Could not access database: \(error)")
10631101
}
1064-
return nil
1102+
return []
10651103
}
10661104

10671105
func getResultsMetadatas(predicate: NSPredicate, sortedByKeyPath: String, ascending: Bool, arraySlice: Int) -> [tableMetadata] {

iOSClient/Favorites/NCFavorite.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,12 @@ class NCFavorite: NCCollectionViewCommon {
5959
var predicate = self.defaultPredicate
6060

6161
if self.serverUrl.isEmpty {
62-
predicate = NSPredicate(format: "account == %@ AND favorite == true", session.account)
62+
predicate = NSPredicate(format: "account == %@ AND favorite == true AND NOT (status IN %@)", session.account, global.metadataStatusHideInView)
6363
}
6464

65-
let results = self.database.getResultsMetadatasPredicate(predicate, layoutForView: layoutForView)
66-
self.dataSource = NCCollectionViewDataSource(results: results, layoutForView: layoutForView)
65+
let metadatas = self.database.getResultsMetadatasPredicate(predicate, layoutForView: layoutForView)
66+
67+
self.dataSource = NCCollectionViewDataSource(metadatas: metadatas, layoutForView: layoutForView)
6768

6869
super.reloadDataSource()
6970
}

iOSClient/Files/NCFiles.swift

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -131,13 +131,13 @@ class NCFiles: NCCollectionViewCommon {
131131
self.metadataFolder = database.getMetadataFolder(session: session, serverUrl: self.serverUrl)
132132
self.richWorkspaceText = database.getTableDirectory(predicate: predicateDirectory)?.richWorkspace
133133

134-
let results = self.database.getResultsMetadatasPredicate(predicate, layoutForView: layoutForView)
135-
self.dataSource = NCCollectionViewDataSource(results: results, layoutForView: layoutForView)
134+
let metadatas = self.database.getResultsMetadatasPredicate(predicate, layoutForView: layoutForView)
136135

137-
guard let results else {
136+
self.dataSource = NCCollectionViewDataSource(metadatas: metadatas, layoutForView: layoutForView)
137+
138+
if metadatas.isEmpty {
138139
return super.reloadDataSource()
139140
}
140-
let metadatas = Array(results.freeze())
141141

142142
self.dataSource.caching(metadatas: metadatas, dataSourceMetadatas: dataSourceMetadatas) { updated in
143143
if updated || self.isNumberOfItemsInAllSectionsNull || self.numberOfItemsInAllSections != metadatas.count {
@@ -201,7 +201,8 @@ class NCFiles: NCCollectionViewCommon {
201201
return completion(nil, false, error)
202202
}
203203
/// Check change eTag or E2EE or DataSource empty
204-
let tableDirectory = self.database.setDirectory(serverUrl: self.serverUrl, richWorkspace: metadata.richWorkspace, account: account)
204+
self.database.updateDirectoryRichWorkspace(metadata.richWorkspace, account: account, serverUrl: self.serverUrl)
205+
let tableDirectory = self.database.getTableDirectory(ocId: metadata.ocId)
205206
guard tableDirectory?.etag != metadata.etag || metadata.e2eEncrypted || self.dataSource.isEmpty() else {
206207
return completion(nil, false, NKError())
207208
}

iOSClient/Groupfolders/NCGroupfolders.swift

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,17 @@ class NCGroupfolders: NCCollectionViewCommon {
5656
// MARK: - DataSource
5757

5858
override func reloadDataSource() {
59-
var results: Results<tableMetadata>?
59+
var metadatas: [tableMetadata] = []
6060

6161
if self.serverUrl.isEmpty {
62-
results = database.getResultsMetadatasFromGroupfolders(session: session)
62+
if let results = database.getResultsMetadatasFromGroupfolders(session: session) {
63+
metadatas = Array(results.freeze())
64+
}
6365
} else {
64-
results = self.database.getResultsMetadatasPredicate(self.defaultPredicate, layoutForView: layoutForView)
66+
metadatas = self.database.getResultsMetadatasPredicate(self.defaultPredicate, layoutForView: layoutForView)
6567
}
6668

67-
self.dataSource = NCCollectionViewDataSource(results: results, layoutForView: layoutForView)
69+
self.dataSource = NCCollectionViewDataSource(metadatas: metadatas, layoutForView: layoutForView)
6870

6971
super.reloadDataSource()
7072
}

0 commit comments

Comments
 (0)