Skip to content

Commit

Permalink
Version 5.5.0 (#2994)
Browse files Browse the repository at this point in the history
  • Loading branch information
marinofaggiana authored Jul 26, 2024
1 parent f21260d commit ca03c1d
Show file tree
Hide file tree
Showing 281 changed files with 4,118 additions and 4,358 deletions.
2 changes: 1 addition & 1 deletion Brand/Database.swift
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,4 @@ import Foundation
// Database Realm
//
let databaseName = "nextcloud.realm"
let databaseSchemaVersion: UInt64 = 348
let databaseSchemaVersion: UInt64 = 354
6 changes: 4 additions & 2 deletions Brand/NCBrand.swift
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ let userAgent: String = {
var folderDefaultAutoUpload: String = "Photos"

// Capabilities Group
var capabilitiesGroups: String = "group.it.twsweb.Crypto-Cloud"
var capabilitiesGroup: String = "group.it.twsweb.Crypto-Cloud"
var capabilitiesGroupApps: String = "group.com.nextcloud.apps"

// BRAND ONLY
Expand Down Expand Up @@ -257,6 +257,7 @@ class NCBrandColor: NSObject {

private func stepCalc(steps: Int, color1: CGColor, color2: CGColor) -> [CGFloat] {
var step = [CGFloat](repeating: 0, count: 3)

step[0] = (color2.components![0] - color1.components![0]) / CGFloat(steps)
step[1] = (color2.components![1] - color1.components![1]) / CGFloat(steps)
step[2] = (color2.components![2] - color1.components![2]) / CGFloat(steps)
Expand All @@ -266,8 +267,8 @@ class NCBrandColor: NSObject {
private func mixPalette(steps: Int, color1: CGColor, color2: CGColor) -> [CGColor] {
var palette = [color1]
let step = stepCalc(steps: steps, color1: color1, color2: color2)

let c1Components = color1.components!

for i in 1 ..< steps {
let r = c1Components[0] + step[0] * CGFloat(i)
let g = c1Components[1] + step[1] * CGFloat(i)
Expand All @@ -292,6 +293,7 @@ class NCBrandColor: NSObject {
let palette1 = mixPalette(steps: steps, color1: red, color2: yellow)
let palette2 = mixPalette(steps: steps, color1: yellow, color2: blue)
let palette3 = mixPalette(steps: steps, color1: blue, color2: red)

return palette1 + palette2 + palette3
}
}
2 changes: 1 addition & 1 deletion Cartfile.resolved
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
binary "https://code.videolan.org/videolan/VLCKit/raw/master/Packaging/MobileVLCKit.json" "3.5.1"
binary "https://code.videolan.org/videolan/VLCKit/raw/master/Packaging/MobileVLCKit.json" "3.6.0"
github "marinofaggiana/TOPasscodeViewController" "ed795637acd2b1ef154e011a04ebab4686d0523c"
93 changes: 19 additions & 74 deletions File Provider Extension/FileProviderData.swift
Original file line number Diff line number Diff line change
Expand Up @@ -40,36 +40,30 @@ class fileProviderData: NSObject {
var accountUrlBase = ""
var homeServerUrl = ""

// Max item for page
let itemForPage = 100

// Anchor
var currentAnchor: UInt64 = 0

// Rank favorite
var listFavoriteIdentifierRank: [String: NSNumber] = [:]

// Item for signalEnumerator
var fileProviderSignalDeleteContainerItemIdentifier: [NSFileProviderItemIdentifier: NSFileProviderItemIdentifier] = [:]
var fileProviderSignalUpdateContainerItem: [NSFileProviderItemIdentifier: FileProviderItem] = [:]
var fileProviderSignalDeleteWorkingSetItemIdentifier: [NSFileProviderItemIdentifier: NSFileProviderItemIdentifier] = [:]
var fileProviderSignalUpdateWorkingSetItem: [NSFileProviderItemIdentifier: FileProviderItem] = [:]

// Error
enum FileProviderError: Error {
case downloadError
case uploadError
}

enum TypeSignal: String {
case delete
case update
case workingSet
}

// MARK: -

func setupAccount(domain: NSFileProviderDomain?, providerExtension: NSFileProviderExtension) -> tableAccount? {

self.domain = domain
if domain != nil {
if let fileProviderManager = NSFileProviderManager(for: domain!) {
self.fileProviderManager = fileProviderManager
}
if let domain, let fileProviderManager = NSFileProviderManager(for: domain) {
self.fileProviderManager = fileProviderManager
}

// LOG
Expand All @@ -81,18 +75,16 @@ class fileProviderData: NSObject {

// NO DOMAIN -> Set default account
if domain == nil {

guard let activeAccount = NCManageDatabase.shared.getActiveAccount() else { return nil }

account = activeAccount.account
user = activeAccount.user
userId = activeAccount.userId
accountUrlBase = activeAccount.urlBase
homeServerUrl = utilityFileSystem.getHomeServer(urlBase: activeAccount.urlBase, userId: activeAccount.userId)

NCManageDatabase.shared.setCapabilities(account: account)

NextcloudKit.shared.setup(account: activeAccount.account, user: activeAccount.user, userId: activeAccount.userId, password: NCKeychain().getPassword(account: activeAccount.account), urlBase: activeAccount.urlBase, userAgent: userAgent, nextcloudVersion: NCGlobal.shared.capabilityServerVersionMajor, delegate: NCNetworking.shared)
NextcloudKit.shared.setup(account: activeAccount.account, user: activeAccount.user, userId: activeAccount.userId, password: NCKeychain().getPassword(account: activeAccount.account), urlBase: activeAccount.urlBase, userAgent: userAgent, nextcloudVersion: NCGlobal.shared.capabilityServerVersionMajor, groupIdentifier: NCBrandOptions.shared.capabilitiesGroup, delegate: NCNetworking.shared)
NCNetworking.shared.delegate = providerExtension as? NCNetworkingDelegate

return tableAccount.init(value: activeAccount)
}
Expand All @@ -106,7 +98,6 @@ class fileProviderData: NSObject {
guard let host = url.host else { continue }
let accountDomain = activeAccount.userId + " (" + host + ")"
if accountDomain == domain!.identifier.rawValue {

account = activeAccount.account
user = activeAccount.user
userId = activeAccount.userId
Expand All @@ -115,84 +106,38 @@ class fileProviderData: NSObject {

NCManageDatabase.shared.setCapabilities(account: account)

NextcloudKit.shared.setup(account: activeAccount.account, user: activeAccount.user, userId: activeAccount.userId, password: NCKeychain().getPassword(account: activeAccount.account), urlBase: activeAccount.urlBase, userAgent: userAgent, nextcloudVersion: NCGlobal.shared.capabilityServerVersionMajor, delegate: NCNetworking.shared)
NextcloudKit.shared.setup(account: activeAccount.account, user: activeAccount.user, userId: activeAccount.userId, password: NCKeychain().getPassword(account: activeAccount.account), urlBase: activeAccount.urlBase, userAgent: userAgent, nextcloudVersion: NCGlobal.shared.capabilityServerVersionMajor, groupIdentifier: NCBrandOptions.shared.capabilitiesGroup, delegate: NCNetworking.shared)
NCNetworking.shared.delegate = providerExtension as? NCNetworkingDelegate

return tableAccount.init(value: activeAccount)
}
}

return nil
}

// MARK: -

@discardableResult
func signalEnumerator(ocId: String, delete: Bool = false, update: Bool = false) -> FileProviderItem? {

guard let metadata = NCManageDatabase.shared.getMetadataFromOcId(ocId) else { return nil }

guard let parentItemIdentifier = fileProviderUtility().getParentItemIdentifier(metadata: metadata) else { return nil }

func signalEnumerator(ocId: String, type: TypeSignal) -> FileProviderItem? {
guard let metadata = NCManageDatabase.shared.getMetadataFromOcId(ocId),
let parentItemIdentifier = fileProviderUtility().getParentItemIdentifier(metadata: metadata) else { return nil }
let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier)

if delete {
if type == .delete {
fileProviderData.shared.fileProviderSignalDeleteContainerItemIdentifier[item.itemIdentifier] = item.itemIdentifier
fileProviderData.shared.fileProviderSignalDeleteWorkingSetItemIdentifier[item.itemIdentifier] = item.itemIdentifier
}

if update {
if type == .update {
fileProviderData.shared.fileProviderSignalUpdateContainerItem[item.itemIdentifier] = item
fileProviderData.shared.fileProviderSignalUpdateWorkingSetItem[item.itemIdentifier] = item
}

if !update && !delete {
if type == .workingSet {
fileProviderData.shared.fileProviderSignalUpdateWorkingSetItem[item.itemIdentifier] = item
}

if update || delete {
currentAnchor += 1
if type == .delete || type == .update {
fileProviderManager.signalEnumerator(for: parentItemIdentifier) { _ in }
}

fileProviderManager.signalEnumerator(for: .workingSet) { _ in }

return item
}

/*
func updateFavoriteForWorkingSet() {

var updateWorkingSet = false
let oldListFavoriteIdentifierRank = listFavoriteIdentifierRank
listFavoriteIdentifierRank = NCManageDatabase.shared.getTableMetadatasDirectoryFavoriteIdentifierRank(account: account)

// (ADD)
for (identifier, _) in listFavoriteIdentifierRank {

guard let metadata = NCManageDatabase.shared.getMetadata(predicate: NSPredicate(format: "ocId == %@", identifier)) else { continue }
guard let parentItemIdentifier = fileProviderUtility.sharedInstance.getParentItemIdentifier(metadata: metadata, homeServerUrl: homeServerUrl) else { continue }
let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier)

fileProviderSignalUpdateWorkingSetItem[item.itemIdentifier] = item
updateWorkingSet = true
}

// (REMOVE)
for (identifier, _) in oldListFavoriteIdentifierRank {

if !listFavoriteIdentifierRank.keys.contains(identifier) {

guard let metadata = NCManageDatabase.shared.getMetadata(predicate: NSPredicate(format: "ocId == %@", identifier)) else { continue }
let itemIdentifier = fileProviderUtility.sharedInstance.getItemIdentifier(metadata: metadata)

fileProviderSignalDeleteWorkingSetItemIdentifier[itemIdentifier] = itemIdentifier
updateWorkingSet = true
}
}

if updateWorkingSet {
signalEnumerator(for: [.workingSet])
}
}
*/
}
24 changes: 8 additions & 16 deletions File Provider Extension/FileProviderDomain.swift
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,8 @@
import UIKit

class FileProviderDomain: NSObject {

func registerDomains() {

NSFileProviderManager.getDomainsWithCompletionHandler { fileProviderDomain, error in

var domains: [String] = []
let pathRelativeToDocumentStorage = NSFileProviderManager.default.documentStorageURL.absoluteString
let accounts = NCManageDatabase.shared.getAllAccount()
Expand All @@ -50,10 +47,10 @@ class FileProviderDomain: NSObject {
}
}
if !domainFound {
let domainRawValue = NSFileProviderDomain(identifier: NSFileProviderDomainIdentifier(rawValue: domain), displayName: domain, pathRelativeToDocumentStorage: pathRelativeToDocumentStorage)
NSFileProviderManager.remove(domainRawValue, completionHandler: { error in
if error != nil {
print("Error domain: \(domainRawValue) error: \(String(describing: error))")
let fileProviderDomain = NSFileProviderDomain(identifier: NSFileProviderDomainIdentifier(rawValue: domain), displayName: domain, pathRelativeToDocumentStorage: pathRelativeToDocumentStorage)
NSFileProviderManager.remove(fileProviderDomain, completionHandler: { error in
if let error {
print("Error domain: \(fileProviderDomain) error: \(String(describing: error))")
}
})
}
Expand All @@ -72,19 +69,14 @@ class FileProviderDomain: NSObject {
}
}
if !domainFound {
let domainRawValue = NSFileProviderDomain(identifier: NSFileProviderDomainIdentifier(rawValue: accountDomain), displayName: accountDomain, pathRelativeToDocumentStorage: pathRelativeToDocumentStorage)
NSFileProviderManager.add(domainRawValue, completionHandler: { error in
if error != nil {
print("Error domain: \(domainRawValue) error: \(String(describing: error))")
let fileProviderDomain = NSFileProviderDomain(identifier: NSFileProviderDomainIdentifier(rawValue: accountDomain), displayName: accountDomain, pathRelativeToDocumentStorage: pathRelativeToDocumentStorage)
NSFileProviderManager.add(fileProviderDomain, completionHandler: { error in
if let error {
print("Error domain: \(fileProviderDomain) error: \(String(describing: error))")
}
})
}
}
}
}

func removeAllDomains() {

NSFileProviderManager.removeAllDomains { _ in }
}
}
Loading

0 comments on commit ca03c1d

Please sign in to comment.