if let existingMetadata = existingMetadatas.first(where: { $0.ocId == updatedMetadata.ocId }) {
if existingMetadata.status == NextcloudItemMetadataTable.Status.normal.rawValue &&
- !existingMetadata.isInSameRemoteState(updatedMetadata) {
+ !existingMetadata.isInSameDatabaseStoreableRemoteState(updatedMetadata) {
returningUpdatedMetadatas.append(NextcloudItemMetadataTable(value: updatedMetadata))
databaseToWriteTo.add(updatedMetadata, update: .all)
, updatedMetadata.ocId, updatedMetadata.fileName, updatedMetadata.etag)
} else {
NSLog("""
- Skipping metadata update as received metadata status is same as existing:
+ Skipping metadata update as received metadata status is same as existing,
+ or metadata is currently being downloaded/uploaded:
+
ocID: %@,
fileName: %@,
etag: %@
return false
}
- func isInSameRemoteState(_ comparingMetadata: NextcloudItemMetadataTable) -> Bool {
+ func isInSameDatabaseStoreableRemoteState(_ comparingMetadata: NextcloudItemMetadataTable) -> Bool {
return comparingMetadata.etag == self.etag &&
comparingMetadata.fileNameView == self.fileNameView &&
comparingMetadata.date == self.date &&
comparingMetadata.hasPreview == self.hasPreview &&
comparingMetadata.note == self.note &&
comparingMetadata.lock == self.lock &&
- comparingMetadata.shareType == self.shareType &&
- comparingMetadata.sharePermissionsCloudMesh == self.sharePermissionsCloudMesh &&
comparingMetadata.sharePermissionsCollaborationServices == self.sharePermissionsCollaborationServices &&
comparingMetadata.favorite == self.favorite
}
@Persisted var sessionSelector = ""
@Persisted var sessionTaskIdentifier: Int = 0
@Persisted var sharePermissionsCollaborationServices: Int = 0
- let sharePermissionsCloudMesh = List<String>()
+ let sharePermissionsCloudMesh = List<String>() // TODO: Find a way to compare these in remote state check
let shareType = List<Int>()
@Persisted var size: Int64 = 0
@Persisted var status: Int = 0