Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Nextcloud.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -5705,7 +5705,7 @@
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 3;
CURRENT_PROJECT_VERSION = 4;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = NKUJUXUJ3B;
ENABLE_STRICT_OBJC_MSGSEND = YES;
Expand Down Expand Up @@ -5771,7 +5771,7 @@
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 3;
CURRENT_PROJECT_VERSION = 4;
DEVELOPMENT_TEAM = NKUJUXUJ3B;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
Expand Down
14 changes: 14 additions & 0 deletions iOSClient/Data/NCManageDatabase+LivePhoto.swift
Original file line number Diff line number Diff line change
Expand Up @@ -103,4 +103,18 @@
}
}
// swiftlint:enable empty_string

/// Returns true if at least one valid Live Photo record exists for the given account.
func hasLivePhotos() async -> Bool {
await core.performRealmReadAsync { realm in
let results = realm.objects(tableLivePhoto.self)
.where {
$0.serverUrlFileNameImage != "" &&

Check warning on line 112 in iOSClient/Data/NCManageDatabase+LivePhoto.swift

View workflow job for this annotation

GitHub Actions / Lint

Empty String Violation: Prefer checking `isEmpty` over comparing `string` to an empty string literal (empty_string)
$0.serverUrlFileNameVideo != "" &&

Check warning on line 113 in iOSClient/Data/NCManageDatabase+LivePhoto.swift

View workflow job for this annotation

GitHub Actions / Lint

Empty String Violation: Prefer checking `isEmpty` over comparing `string` to an empty string literal (empty_string)
$0.fileIdImage != "" &&

Check warning on line 114 in iOSClient/Data/NCManageDatabase+LivePhoto.swift

View workflow job for this annotation

GitHub Actions / Lint

Empty String Violation: Prefer checking `isEmpty` over comparing `string` to an empty string literal (empty_string)
$0.fileIdVideo != ""

Check warning on line 115 in iOSClient/Data/NCManageDatabase+LivePhoto.swift

View workflow job for this annotation

GitHub Actions / Lint

Empty String Violation: Prefer checking `isEmpty` over comparing `string` to an empty string literal (empty_string)
}
return !results.isEmpty
} ?? false
}
}
28 changes: 26 additions & 2 deletions iOSClient/Data/NCMetadataTranfersSuccess.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,25 @@
import Foundation
import NextcloudKit

public protocol NCMetadataTransfersSuccessDelegate: AnyObject {
func metadataTransferWillFlush(hasLivePhotos: Bool)
func metadataTransferDidFlush(hasLivePhotos: Bool)
}

actor NCMetadataTranfersSuccess {
private var tranfersSuccess: [tableMetadata] = []
private let utility = NCUtility()
private var delegates: [NCMetadataTransfersSuccessDelegate] = []

// Adds a new delegate
func addDelegate(_ delegate: NCMetadataTransfersSuccessDelegate) {
delegates.append(delegate)
}

// Removes a delegate
func removeDelegate(_ delegate: NCMetadataTransfersSuccessDelegate) {
delegates.removeAll { $0 as AnyObject === delegate as AnyObject }
}

func append(metadata: tableMetadata, ocId: String, date: Date?, etag: String?) async {
metadata.ocId = ocId
Expand Down Expand Up @@ -55,14 +71,17 @@ actor NCMetadataTranfersSuccess {

func flush() async {
let metadatas: [tableMetadata] = tranfersSuccess
let hasLivePhotos = await NCManageDatabase.shared.hasLivePhotos()
tranfersSuccess.removeAll(keepingCapacity: true)

NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterMetadataTranfersSuccessFlush)

var metadatasLocalFiles: [tableMetadata] = []
var metadatasLivePhoto: [tableMetadata] = []
var autoUploads: [tableAutoUploadTransfer] = []

for delegate in delegates {
delegate.metadataTransferWillFlush(hasLivePhotos: hasLivePhotos)
}

for metadata in metadatas {
let results = await NCNetworking.shared.helperMetadataSuccess(metadata: metadata)
if let localFile = results.localFile {
Expand Down Expand Up @@ -99,6 +118,7 @@ actor NCMetadataTranfersSuccess {
for metadata in metadatas {
delegate.transferChange(status: NCGlobal.shared.networkingStatusUploaded,
account: metadata.account,
fileName: metadata.fileName,
serverUrl: metadata.serverUrl,
selector: metadata.sessionSelector,
ocId: metadata.ocId,
Expand All @@ -108,6 +128,10 @@ actor NCMetadataTranfersSuccess {
}
}

for delegate in delegates {
delegate.metadataTransferDidFlush(hasLivePhotos: hasLivePhotos)
}

nkLog(tag: NCGlobal.shared.logTagMetadataTransfers, message: "Flush successful (\(metadatas.count))", consoleOnly: true)
}
}
5 changes: 3 additions & 2 deletions iOSClient/Main/Collection Common/NCCollectionViewCommon.swift
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ class NCCollectionViewCommon: UIViewController, UIGestureRecognizerDelegate, UIS
return self.serverUrl == self.utilityFileSystem.getHomeServer(session: self.session) && capabilities.recommendations
}

internal let debouncer = NCDebouncer()
internal let debouncer = NCDebouncer(maxEventCount: NCBrandOptions.shared.numMaximumProcess)

// MARK: - View Life Cycle

Expand Down Expand Up @@ -346,6 +346,7 @@ class NCCollectionViewCommon: UIViewController, UIGestureRecognizerDelegate, UIS

func transferChange(status: String,
account: String,
fileName: String,
serverUrl: String,
selector: String?,
ocId: String,
Expand Down Expand Up @@ -382,7 +383,7 @@ class NCCollectionViewCommon: UIViewController, UIGestureRecognizerDelegate, UIS
case self.global.networkingStatusCreateFolder:
if serverUrl == self.serverUrl,
selector != self.global.selectorUploadAutoUpload,
let metadata = await NCManageDatabase.shared.getMetadataFromOcIdAsync(ocId) {
let metadata = await NCManageDatabase.shared.getMetadataAsync(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@ AND fileName == %@", account, serverUrl, fileName)) {
self.pushMetadata(metadata)
}
// RENAME
Expand Down
2 changes: 2 additions & 0 deletions iOSClient/Main/NCDragDrop.swift
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,7 @@ class NCDragDrop: NSObject {
await NCNetworking.shared.transferDispatcher.notifyAllDelegates { delegate in
delegate.transferChange(status: self.global.networkingStatusCopyMove,
account: metadata.account,
fileName: metadata.fileName,
serverUrl: metadata.serverUrl,
selector: metadata.sessionSelector,
ocId: metadata.ocId,
Expand All @@ -168,6 +169,7 @@ class NCDragDrop: NSObject {
await NCNetworking.shared.transferDispatcher.notifyAllDelegates { delegate in
delegate.transferChange(status: self.global.networkingStatusCopyMove,
account: metadata.account,
fileName: metadata.fileName,
serverUrl: metadata.serverUrl,
selector: metadata.sessionSelector,
ocId: metadata.ocId,
Expand Down
9 changes: 5 additions & 4 deletions iOSClient/Main/NCMainNavigationController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -336,10 +336,11 @@ class NCMainNavigationController: UINavigationController, UINavigationController
Task { @MainActor in
let richWorkspaceCommon = NCRichWorkspaceCommon()
if let viewController = controller.currentViewController() {
if await NCManageDatabase.shared.getMetadataAsync(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@ AND fileNameView LIKE[c] %@",
session.account,
serverUrl,
NCGlobal.shared.fileNameRichWorkspace.lowercased())) == nil {
if await NCManageDatabase.shared.getMetadataAsync(
predicate: NSPredicate(format: "account == %@ AND serverUrl == %@ AND fileNameView LIKE[c] %@",
session.account,
serverUrl,
NCGlobal.shared.fileNameRichWorkspace.lowercased())) == nil {
richWorkspaceCommon.createViewerNextcloudText(serverUrl: serverUrl, viewController: viewController, session: session)
} else {
richWorkspaceCommon.openViewerNextcloudText(serverUrl: serverUrl, viewController: viewController, session: session)
Expand Down
1 change: 1 addition & 0 deletions iOSClient/Media/NCMedia+TransferDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ extension NCMedia: NCTransferDelegate {

func transferChange(status: String,
account: String,
fileName: String,
serverUrl: String,
selector: String?,
ocId: String,
Expand Down
2 changes: 1 addition & 1 deletion iOSClient/Media/NCMedia.swift
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ class NCMedia: UIViewController {
var numberOfColumns: Int = 0
var lastNumberOfColumns: Int = 0

let debouncer = NCDebouncer()
let debouncer = NCDebouncer(maxEventCount: 10)

@MainActor
var session: NCSession.Session {
Expand Down
2 changes: 2 additions & 0 deletions iOSClient/Menu/NCCollectionViewCommon+Menu.swift
Original file line number Diff line number Diff line change
Expand Up @@ -289,6 +289,7 @@ extension NCCollectionViewCommon {
await NCNetworking.shared.transferDispatcher.notifyAllDelegates { delegate in
delegate.transferChange(status: NCGlobal.shared.networkingStatusDownloaded,
account: metadata.account,
fileName: metadata.fileName,
serverUrl: metadata.serverUrl,
selector: NCGlobal.shared.selectorSaveAsScan,
ocId: metadata.ocId,
Expand Down Expand Up @@ -360,6 +361,7 @@ extension NCCollectionViewCommon {
await NCNetworking.shared.transferDispatcher.notifyAllDelegates { delegate in
delegate.transferChange(status: NCGlobal.shared.networkingStatusDownloaded,
account: metadata.account,
fileName: metadata.fileName,
serverUrl: metadata.serverUrl,
selector: NCGlobal.shared.selectorLoadFileQuickLook,
ocId: metadata.ocId,
Expand Down
3 changes: 3 additions & 0 deletions iOSClient/Menu/NCContextMenu.swift
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ class NCContextMenu: NSObject {
await self.networking.transferDispatcher.notifyAllDelegates { delegate in
delegate.transferChange(status: self.global.networkingStatusDownloaded,
account: self.metadata.account,
fileName: self.metadata.fileName,
serverUrl: self.metadata.serverUrl,
selector: self.global.selectorOpenIn,
ocId: self.metadata.ocId,
Expand Down Expand Up @@ -113,6 +114,7 @@ class NCContextMenu: NSObject {
await self.networking.transferDispatcher.notifyAllDelegates { delegate in
delegate.transferChange(status: self.global.networkingStatusDownloaded,
account: self.metadata.account,
fileName: self.metadata.fileName,
serverUrl: self.metadata.serverUrl,
selector: self.global.selectorLoadFileQuickLook,
ocId: self.metadata.ocId,
Expand Down Expand Up @@ -180,6 +182,7 @@ class NCContextMenu: NSObject {
await self.networking.transferDispatcher.notifyAllDelegates { delegate in
delegate.transferChange(status: NCGlobal.shared.networkingStatusDelete,
account: self.metadata.account,
fileName: self.metadata.fileName,
serverUrl: self.metadata.serverUrl,
selector: self.metadata.sessionSelector,
ocId: self.metadata.ocId,
Expand Down
1 change: 0 additions & 1 deletion iOSClient/NCGlobal.swift
Original file line number Diff line number Diff line change
Expand Up @@ -270,7 +270,6 @@ final class NCGlobal: Sendable {
let notificationCenterCheckUserDelaultErrorDone = "checkUserDelaultErrorDone" // userInfo: account, controller
let notificationCenterServerDidUpdate = "serverDidUpdate" // userInfo: account
let notificationCenterNetworkReachability = "networkReachability"
let notificationCenterMetadataTranfersSuccessFlush = "metadataTranfersSuccessFlush"

let notificationCenterMenuSearchTextPDF = "menuSearchTextPDF"
let notificationCenterMenuGotToPageInPDF = "menuGotToPageInPDF"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,7 @@ class NCNetworkingE2EECreateFolder: NSObject {
await NCNetworking.shared.transferDispatcher.notifyAllDelegates { delegate in
delegate.transferChange(status: self.global.networkingStatusCreateFolder,
account: metadata.account,
fileName: metadata.fileName,
serverUrl: metadata.serverUrl,
selector: metadata.sessionSelector,
ocId: metadata.ocId,
Expand Down
1 change: 1 addition & 0 deletions iOSClient/Networking/E2EE/NCNetworkingE2EEMarkFolder.swift
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ class NCNetworkingE2EEMarkFolder: NSObject {
await NCNetworking.shared.transferDispatcher.notifyAllDelegates { delegate in
delegate.transferChange(status: NCGlobal.shared.networkingStatusCreateFolder,
account: metadata.account,
fileName: metadata.fileName,
serverUrl: metadata.serverUrl,
selector: metadata.sessionSelector,
ocId: metadata.ocId,
Expand Down
1 change: 1 addition & 0 deletions iOSClient/Networking/E2EE/NCNetworkingE2EERename.swift
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ class NCNetworkingE2EERename: NSObject {
await NCNetworking.shared.transferDispatcher.notifyAllDelegates { delegate in
delegate.transferChange(status: NCGlobal.shared.networkingStatusRename,
account: metadata.account,
fileName: metadata.fileName,
serverUrl: metadata.serverUrl,
selector: metadata.sessionSelector,
ocId: metadata.ocId,
Expand Down
1 change: 1 addition & 0 deletions iOSClient/Networking/E2EE/NCNetworkingE2EEUpload.swift
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,7 @@ class NCNetworkingE2EEUpload: NSObject {
await NCNetworking.shared.transferDispatcher.notifyAllDelegates { delegate in
delegate.transferChange(status: global.networkingStatusUploaded,
account: metadata.account,
fileName: metadata.fileName,
serverUrl: metadata.serverUrl,
selector: metadata.sessionSelector,
ocId: metadata.ocId,
Expand Down
1 change: 1 addition & 0 deletions iOSClient/Networking/NCDownloadAction.swift
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ class NCDownloadAction: NSObject, UIDocumentInteractionControllerDelegate, NCSel

func transferChange(status: String,
account: String,
fileName: String,
serverUrl: String,
selector: String?,
ocId: String,
Expand Down
5 changes: 5 additions & 0 deletions iOSClient/Networking/NCNetworking+Download.swift
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ extension NCNetworking {
await self.transferDispatcher.notifyAllDelegates { delegate in
delegate.transferChange(status: self.global.networkingStatusDownloading,
account: metadata.account,
fileName: metadata.fileName,
serverUrl: metadata.serverUrl,
selector: metadata.sessionSelector,
ocId: metadata.ocId,
Expand Down Expand Up @@ -120,6 +121,7 @@ extension NCNetworking {
await self.transferDispatcher.notifyAllDelegates { delegate in
delegate.transferChange(status: self.global.networkingStatusDownloading,
account: metadata.account,
fileName: metadata.fileName,
serverUrl: metadata.serverUrl,
selector: metadata.sessionSelector,
ocId: metadata.ocId,
Expand Down Expand Up @@ -167,6 +169,7 @@ extension NCNetworking {
await self.transferDispatcher.notifyAllDelegates { delegate in
delegate.transferChange(status: self.global.networkingStatusDownloaded,
account: metadata.account,
fileName: metadata.fileName,
serverUrl: metadata.serverUrl,
selector: metadata.sessionSelector,
ocId: metadata.ocId,
Expand Down Expand Up @@ -198,6 +201,7 @@ extension NCNetworking {
await self.transferDispatcher.notifyAllDelegates { delegate in
delegate.transferChange(status: self.global.networkingStatusDownloadCancel,
account: metadata.account,
fileName: metadata.fileName,
serverUrl: metadata.serverUrl,
selector: metadata.sessionSelector,
ocId: metadata.ocId,
Expand All @@ -215,6 +219,7 @@ extension NCNetworking {
await self.transferDispatcher.notifyAllDelegates { delegate in
delegate.transferChange(status: NCGlobal.shared.networkingStatusDownloaded,
account: metadata.account,
fileName: metadata.fileName,
serverUrl: metadata.serverUrl,
selector: metadata.sessionSelector,
ocId: metadata.ocId,
Expand Down
Loading
Loading