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
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ extension FilesDatabaseManager {
.where({ $0.ocId == ocId && $0.directory })
.first
else {
logger.error("Could not find directory metadata for ocId. Not proceeding with deletion.", [.ocId: ocId])
logger.error("Could not find directory metadata for ocId. Not proceeding with deletion.", [.item: ocId])
return nil
}

Expand All @@ -62,13 +62,13 @@ extension FilesDatabaseManager {
let directoryAccount = directoryMetadata.account
let directoryEtag = directoryMetadata.etag

logger.debug("Deleting root directory metadata in recursive delete.", [.eTag: directoryEtag, .ocId: directoryMetadata.ocId, .url: directoryUrlPath])
logger.debug("Deleting root directory metadata in recursive delete.", [.eTag: directoryEtag, .item: directoryMetadata.ocId, .url: directoryUrlPath])

let database = ncDatabase()
do {
try database.write { directoryMetadata.deleted = true }
} catch let error {
logger.error("Failure to delete root directory metadata in recursive delete.", [.error: error, .eTag: directoryEtag, .ocId: directoryOcId, .url: directoryUrlPath])
logger.error("Failure to delete root directory metadata in recursive delete.", [.error: error, .eTag: directoryEtag, .item: directoryOcId, .url: directoryUrlPath])
return nil
}

Expand All @@ -84,11 +84,11 @@ extension FilesDatabaseManager {
try database.write { result.deleted = true }
deletedMetadatas.append(inactiveItemMetadata)
} catch let error {
logger.error("Failure to delete directory metadata child in recursive delete", [.error: error, .eTag: directoryEtag, .ocId: directoryOcId, .url: directoryUrlPath])
logger.error("Failure to delete directory metadata child in recursive delete", [.error: error, .eTag: directoryEtag, .item: directoryOcId, .url: directoryUrlPath])
}
}

logger.debug("Completed deletions in directory recursive delete.", [.eTag: directoryEtag, .ocId: directoryOcId, .url: directoryUrlPath])
logger.debug("Completed deletions in directory recursive delete.", [.eTag: directoryEtag, .item: directoryOcId, .url: directoryUrlPath])

return deletedMetadatas
}
Expand All @@ -100,7 +100,7 @@ extension FilesDatabaseManager {
.where({ $0.ocId == ocId && $0.directory })
.first
else {
logger.error("Could not find a directory with ocID \(ocId), cannot proceed with recursive renaming.", [.ocId: ocId])
logger.error("Could not find a directory with ocID \(ocId), cannot proceed with recursive renaming.", [.item: ocId])
return nil
}

Expand All @@ -114,7 +114,7 @@ extension FilesDatabaseManager {
}

renameItemMetadata(ocId: ocId, newServerUrl: newServerUrl, newFileName: newFileName)
logger.debug("Renamed root renaming directory from \"\(oldDirectoryServerUrl)\" to \"\(newDirectoryServerUrl)\".", [.ocId: ocId])
logger.debug("Renamed root renaming directory from \"\(oldDirectoryServerUrl)\" to \"\(newDirectoryServerUrl)\".", [.item: ocId])

do {
let database = ncDatabase()
Expand All @@ -133,7 +133,7 @@ extension FilesDatabaseManager {
}
}
} catch {
logger.error("Could not rename directory metadata.", [.error: error, .ocId: ocId, .url: newServerUrl])
logger.error("Could not rename directory metadata.", [.error: error, .item: ocId, .url: newServerUrl])
return nil
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ public extension FilesDatabaseManager {
func set(keepDownloaded: Bool, for metadata: SendableItemMetadata) throws -> SendableItemMetadata? {
guard #available(macOS 13.0, iOS 16.0, visionOS 1.0, *) else {
let error = "Could not update keepDownloaded status for item because the system does not support this state."
logger.error(error, [.ocId: metadata.ocId, .name: metadata.fileName])
logger.error(error, [.item: metadata.ocId, .name: metadata.fileName])

throw NSError(
domain: Self.errorDomain,
Expand All @@ -19,7 +19,7 @@ public extension FilesDatabaseManager {

guard let result = itemMetadatas.where({ $0.ocId == metadata.ocId }).first else {
let error = "Did not update keepDownloaded for item metadata as it was not found."
logger.error(error, [.ocId: metadata.ocId, .name: metadata.fileName])
logger.error(error, [.item: metadata.ocId, .name: metadata.fileName])

throw NSError(
domain: Self.errorDomain,
Expand All @@ -31,7 +31,7 @@ public extension FilesDatabaseManager {
try ncDatabase().write {
result.keepDownloaded = keepDownloaded

logger.debug("Updated keepDownloaded status for item metadata.", [.ocId: metadata.ocId, .name: metadata.fileName])
logger.debug("Updated keepDownloaded status for item metadata.", [.item: metadata.ocId, .name: metadata.fileName])
}
return SendableItemMetadata(value: result)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -267,32 +267,20 @@ public final class FilesDatabaseManager: Sendable {

deletedMetadatas.append(metadataToDelete)

logger.debug("Deleting item metadata during update.", [.metadata: existingMetadata])
logger.debug("Deleting item metadata during update.", [.item: existingMetadata.ocId])
}

return deletedMetadatas
}

private func processItemMetadatasToUpdate(
existingMetadatas: Results<RealmItemMetadata>,
updatedMetadatas: [SendableItemMetadata],
keepExistingDownloadState: Bool
) -> (
newMetadatas: [SendableItemMetadata],
updatedMetadatas: [SendableItemMetadata],
directoriesNeedingRename: [SendableItemMetadata]
) {
private func processItemMetadatasToUpdate(existingMetadatas: Results<RealmItemMetadata>, updatedMetadatas: [SendableItemMetadata], keepExistingDownloadState: Bool) -> (newMetadatas: [SendableItemMetadata], updatedMetadatas: [SendableItemMetadata], directoriesNeedingRename: [SendableItemMetadata]) {
var returningNewMetadatas: [SendableItemMetadata] = []
var returningUpdatedMetadatas: [SendableItemMetadata] = []
var directoriesNeedingRename: [SendableItemMetadata] = []

for var updatedMetadata in updatedMetadatas {
if let existingMetadata = existingMetadatas.first(where: {
$0.ocId == updatedMetadata.ocId
}) {
if existingMetadata.status == Status.normal.rawValue,
!existingMetadata.isInSameDatabaseStoreableRemoteState(updatedMetadata)
{
if let existingMetadata = existingMetadatas.first(where: { $0.ocId == updatedMetadata.ocId }) {
if existingMetadata.status == Status.normal.rawValue, !existingMetadata.isInSameDatabaseStoreableRemoteState(updatedMetadata) {
if updatedMetadata.directory,
updatedMetadata.serverUrl != existingMetadata.serverUrl ||
updatedMetadata.fileName != existingMetadata.fileName
Expand All @@ -303,20 +291,22 @@ public final class FilesDatabaseManager: Sendable {
if keepExistingDownloadState {
updatedMetadata.downloaded = existingMetadata.downloaded
}

updatedMetadata.visitedDirectory = existingMetadata.visitedDirectory
updatedMetadata.keepDownloaded = existingMetadata.keepDownloaded
updatedMetadata.lockToken = existingMetadata.lockToken

returningUpdatedMetadatas.append(updatedMetadata)

logger.debug("Updated existing item metadata.", [
.ocId: updatedMetadata.ocId,
.item: updatedMetadata.ocId,
.eTag: updatedMetadata.etag,
.name: updatedMetadata.fileName,
.syncTime: updatedMetadata.syncTime.description,
])
} else {
logger.debug("Skipping item metadata update; same as existing, or still in transit.", [
.ocId: updatedMetadata.ocId,
.item: updatedMetadata.ocId,
.eTag: updatedMetadata.etag,
.name: updatedMetadata.fileName,
.syncTime: updatedMetadata.syncTime.description,
Expand All @@ -326,7 +316,7 @@ public final class FilesDatabaseManager: Sendable {
} else { // This is a new metadata
returningNewMetadatas.append(updatedMetadata)

logger.debug("Created new item metadata during update.", [.metadata: updatedMetadata])
logger.debug("Created new item metadata during update.", [.item: updatedMetadata.ocId])
}
}

Expand Down Expand Up @@ -469,7 +459,7 @@ public final class FilesDatabaseManager: Sendable {
}

logger.debug("Updated status for item metadata.", [
.ocId: metadata.ocId,
.item: metadata.ocId,
.eTag: metadata.etag,
.name: metadata.fileName,
.syncTime: metadata.syncTime,
Expand All @@ -478,7 +468,7 @@ public final class FilesDatabaseManager: Sendable {
return SendableItemMetadata(value: result)
} catch {
logger.error("Could not update status for item metadata.", [
.ocId: metadata.ocId,
.item: metadata.ocId,
.eTag: metadata.etag,
.error: error,
.name: metadata.fileName
Expand All @@ -494,10 +484,10 @@ public final class FilesDatabaseManager: Sendable {
do {
try database.write {
database.add(RealmItemMetadata(value: metadata), update: .all)
logger.debug("Added item metadata.", [.metadata: metadata])
logger.debug("Added item metadata.", [.item: metadata.ocId, .name: metadata.name, .url: metadata.serverUrl])
}
} catch {
logger.error("Failed to add item metadata.", [.metadata: metadata, .error: error])
logger.error("Failed to add item metadata.", [.item: metadata.ocId, .name: metadata.name, .url: metadata.serverUrl, .error: error])
}
}

Expand Down Expand Up @@ -554,7 +544,7 @@ public final class FilesDatabaseManager: Sendable {
}

guard let parentDirectoryMetadata = parentDirectoryMetadataForItem(metadata) else {
logger.error("Could not get item parent directory item metadata for metadata.", [.metadata: metadata])
logger.error("Could not get item parent directory item metadata for metadata.", [.item: metadata.ocId])

return nil
}
Expand Down Expand Up @@ -583,7 +573,7 @@ public final class FilesDatabaseManager: Sendable {
guard error == nil, let parentMetadata = metadatas?.first else {
logger.error("Could not retrieve parent item identifier remotely.", [
.error: error,
.ocId: metadata.ocId,
.item: metadata.ocId,
.name: metadata.fileName
])

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,19 +56,22 @@ extension Enumerator {
return (metadatas, nil, nil, nil, error)
}

guard var (directoryMetadata, _, metadatas) =
await files.toDirectoryReadMetadatas(account: account)
else {
guard var (directoryMetadata, _, metadatas) = await files.toDirectoryReadMetadatas(account: account) else {
logger.error("Could not convert NKFiles to DirectoryReadMetadatas!")
return (nil, nil, nil, nil, .invalidData)
}

// STORE DATA FOR CURRENTLY SCANNED DIRECTORY
assert(directoryMetadata.directory)
guard directoryMetadata.directory else {
logger.error("Expected directory metadata but received file metadata for serverUrl: \(serverUrl)")
return (nil, nil, nil, nil, .invalidData)
}

if let existingMetadata = dbManager.itemMetadata(ocId: directoryMetadata.ocId) {
directoryMetadata.downloaded = existingMetadata.downloaded
directoryMetadata.keepDownloaded = existingMetadata.keepDownloaded
}

directoryMetadata.visitedDirectory = true

metadatas.insert(directoryMetadata, at: 0)
Expand Down Expand Up @@ -189,6 +192,7 @@ extension Enumerator {
let existing = dbManager.itemMetadata(ocId: metadata.ocId)
let isNew = existing == nil
let newItems: [SendableItemMetadata] = isNew ? [metadata] : []
metadata.lockToken = existing?.lockToken
let updatedItems: [SendableItemMetadata] = isNew ? [] : [metadata]
metadata.downloaded = existing?.downloaded == true
metadata.keepDownloaded = existing?.keepDownloaded == true
Expand All @@ -213,7 +217,7 @@ extension Enumerator {
let (
allMetadatas, newMetadatas, updatedMetadatas, deletedMetadatas, readError
) = await handleDepth1ReadFileOrFolder(
serverUrl: serverUrl,
serverUrl: serverUrl,
account: account,
dbManager: dbManager,
files: files,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ extension Enumerator {
)
newTrashedItems.append(item)

logger.debug("Will enumerate changed trash item.", [.ocId: metadata.ocId, .name: metadata.fileName])
logger.debug("Will enumerate changed trash item.", [.item: metadata.ocId, .name: metadata.fileName])
}

let deletedTrashedItemsIdentifiers = existingTrashedItems.map {
Expand Down
Loading