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: 4 additions & 0 deletions Nextcloud.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,7 @@
F70B86752642CE3B00ED5349 /* FirebaseCrashlytics in Frameworks */ = {isa = PBXBuildFile; productRef = F70B86742642CE3B00ED5349 /* FirebaseCrashlytics */; };
F70BFC7420E0FA7D00C67599 /* NCUtility.swift in Sources */ = {isa = PBXBuildFile; fileRef = F70BFC7320E0FA7C00C67599 /* NCUtility.swift */; };
F70BFC7520E0FA7D00C67599 /* NCUtility.swift in Sources */ = {isa = PBXBuildFile; fileRef = F70BFC7320E0FA7C00C67599 /* NCUtility.swift */; };
F70C8742301B1E5600170B1F /* NCCollectionViewCommon+CollectionViewDataSourcePrefetching.swift in Sources */ = {isa = PBXBuildFile; fileRef = F70C8741301B1E5600170B1F /* NCCollectionViewCommon+CollectionViewDataSourcePrefetching.swift */; };
F70CAE3A1F8CF31A008125FD /* NCEndToEndEncryption.m in Sources */ = {isa = PBXBuildFile; fileRef = F70CAE391F8CF31A008125FD /* NCEndToEndEncryption.m */; };
F70CEF5623E9C7E50007035B /* UIColor+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F70CEF5523E9C7E50007035B /* UIColor+Extension.swift */; };
F70D7C3725FFBF82002B9E34 /* NCCollectionViewCommon.swift in Sources */ = {isa = PBXBuildFile; fileRef = F70D7C3525FFBF81002B9E34 /* NCCollectionViewCommon.swift */; };
Expand Down Expand Up @@ -1402,6 +1403,7 @@
F70968A324212C4E00ED60E5 /* NCLivePhoto.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NCLivePhoto.swift; sourceTree = "<group>"; };
F70A07C8205285FB00DC1231 /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-PT"; path = "pt-PT.lproj/Localizable.strings"; sourceTree = "<group>"; };
F70BFC7320E0FA7C00C67599 /* NCUtility.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCUtility.swift; sourceTree = "<group>"; };
F70C8741301B1E5600170B1F /* NCCollectionViewCommon+CollectionViewDataSourcePrefetching.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NCCollectionViewCommon+CollectionViewDataSourcePrefetching.swift"; sourceTree = "<group>"; };
F70CAE381F8CF31A008125FD /* NCEndToEndEncryption.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NCEndToEndEncryption.h; sourceTree = "<group>"; };
F70CAE391F8CF31A008125FD /* NCEndToEndEncryption.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NCEndToEndEncryption.m; sourceTree = "<group>"; };
F70CEF5523E9C7E50007035B /* UIColor+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIColor+Extension.swift"; sourceTree = "<group>"; };
Expand Down Expand Up @@ -2694,6 +2696,7 @@
F7743A132C33F13A0034F670 /* NCCollectionViewCommon+CollectionViewDataSource.swift */,
F7743A112C33F0A20034F670 /* NCCollectionViewCommon+CollectionViewDelegate.swift */,
F747EB0C2C4AC1FF00F959A8 /* NCCollectionViewCommon+CollectionViewDelegateFlowLayout.swift */,
F70C8741301B1E5600170B1F /* NCCollectionViewCommon+CollectionViewDataSourcePrefetching.swift */,
F7D890742BD25C570050B8A6 /* NCCollectionViewCommon+DragDrop.swift */,
F799DF872C4B83CC003410B5 /* NCCollectionViewCommon+EasyTipView.swift */,
F778231D2C42C07C001BB94F /* NCCollectionViewCommon+MediaLayout.swift */,
Expand Down Expand Up @@ -4894,6 +4897,7 @@
F78ACD52219046DC0088454D /* NCSectionFirstHeader.swift in Sources */,
F743C89E2E5B25A1000173A9 /* UIScene+Extension.swift in Sources */,
F72944F52A8424F800246839 /* NCEndToEndMetadataV1.swift in Sources */,
F70C8742301B1E5600170B1F /* NCCollectionViewCommon+CollectionViewDataSourcePrefetching.swift in Sources */,
F710D2022405826100A6033D /* NCContextMenuViewer.swift in Sources */,
F7EDBB582FA8D00200098C42 /* NCMediaViewerAppearance.swift in Sources */,
F74E3EEB2FB0AD8500252FA0 /* Notification+Extension.swift in Sources */,
Expand Down
84 changes: 19 additions & 65 deletions iOSClient/Main/Collection Common/Cell/NCCellMain.swift
Original file line number Diff line number Diff line change
Expand Up @@ -139,46 +139,17 @@ extension NCCollectionViewCommon {
}

if metadata.name == global.appName {
let ext = global.getSizeExtension(column: numberOfColumns)
let ocId = metadata.ocId

if metadata.iconName.isEmpty {
cell.previewImg?.image = imageCache.getImageFile()
} else {
cell.previewImg?.image = utility.loadImage(
named: metadata.iconName,
useTypeIconFile: true,
account: metadata.account
)
}

cell.previewImg?.contentMode = .scaleAspectFit

DispatchQueue.global(qos: .userInitiated).async { [weak self, weak cell] in
guard let self else {
return
}

let image = self.utility.getImage(
ocId: metadata.ocId,
etag: metadata.etag,
ext: ext,
userId: metadata.userId,
urlBase: metadata.urlBase
)

guard let image else {
return
}

DispatchQueue.main.async {
guard let cell,
cell.metadata?.ocId == ocId else {
return
}

cell.previewImg?.image = image
cell.previewImg?.contentMode = .scaleAspectFill
let ext = global.getSizeExtension(column: self.numberOfColumns)
if let image = imageCache.getImageCache(ocId: metadata.ocId, etag: metadata.etag, ext: ext) {
cell.previewImg?.image = image
} else if let image = utility.getImage(ocId: metadata.ocId, etag: metadata.etag, ext: ext, userId: metadata.userId, urlBase: metadata.urlBase) {
imageCache.addImageCache(ocId: metadata.ocId, etag: metadata.etag, image: image, ext: ext)
cell.previewImg?.image = image
} else if cell.previewImg?.image == nil {
if metadata.iconName.isEmpty {
cell.previewImg?.image = imageCache.getImageFile()
} else {
cell.previewImg?.image = utility.loadImage(named: metadata.iconName, useTypeIconFile: true, account: metadata.account)
}
}
} else {
Expand Down Expand Up @@ -206,31 +177,14 @@ extension NCCollectionViewCommon {
if !metadata.iconUrl.isEmpty {
if let user = getAvatarFromIconUrl(metadata: metadata) {
let fileName = NCSession.shared.getFileName(urlBase: metadata.urlBase, user: user)
let fileNameLocalPath = self.utilityFileSystem.createServerUrl(serverUrl: utilityFileSystem.directoryUserData, fileName: fileName)
let account = metadata.account
let ocId = metadata.ocId

Task {
let etagResource = await database.getTableAvatarAsync(fileName: fileName)?.etag
let results = await NextcloudKit.shared.downloadAvatarAsync(
user: user,
fileNameLocalPath: fileNameLocalPath,
sizeImage: NCGlobal.shared.avatarSize,
avatarSizeRounded: NCGlobal.shared.avatarSizeRounded,
etagResource: etagResource,
account: account)

if results.error == .success,
let image = results.imageAvatar,
let etag = results.etag,
etag != etagResource {
await self.database.addAvatarAsync(fileName: fileName, etag: etag)
await MainActor.run {
guard cell.metadata?.ocId == ocId else {
return
}
cell.previewImg?.image = image
}

if let image = NCImageCache.shared.getImageCache(key: fileName) {
cell.previewImg?.image = image
} else {
let fileNameLocalPath = self.utilityFileSystem.createServerUrl(serverUrl: utilityFileSystem.directoryUserData, fileName: fileName)
if let image = UIImage(contentsOfFile: fileNameLocalPath) {
cell.previewImg?.image = image
imageCache.addImageCache(image: image, key: fileName)
}
}
}
Expand Down
3 changes: 1 addition & 2 deletions iOSClient/Main/Collection Common/Cell/NCGridCell.swift
Original file line number Diff line number Diff line change
Expand Up @@ -240,11 +240,10 @@ class NCGridLayout: UICollectionViewFlowLayout {
}

extension NCCollectionViewCommon {
func gridCell(cell: NCGridCell, indexPath: IndexPath, metadata: tableMetadata) -> NCGridCell {
func gridCell(cell: NCGridCell, indexPath: IndexPath, metadata: tableMetadata, existsImagePreview: Bool) -> NCGridCell {
var isShare = false
var isMounted = false
var a11yValues: [String] = []
let existsImagePreview = utilityFileSystem.fileProviderStorageImageExists(metadata.ocId, etag: metadata.etag, userId: metadata.userId, urlBase: metadata.urlBase)

// CONTENT MODE
cell.previewImg?.layer.borderWidth = 0
Expand Down
48 changes: 9 additions & 39 deletions iOSClient/Main/Collection Common/Cell/NCListCell.swift
Original file line number Diff line number Diff line change
Expand Up @@ -412,7 +412,7 @@ class NCListLayout: UICollectionViewFlowLayout {

#if !EXTENSION
extension NCCollectionViewCommon {
func listCell(cell: NCListCell, indexPath: IndexPath, metadata: tableMetadata) -> NCListCell {
func listCell(cell: NCListCell, indexPath: IndexPath, metadata: tableMetadata, existsImagePreview: Bool) -> NCListCell {
defer {
let capabilities = NCNetworking.shared.capabilities[session.account] ?? NKCapabilities.Capabilities()
if !metadata.isSharable() || (!capabilities.fileSharingApiEnabled && !capabilities.filesComments && capabilities.activity.isEmpty) {
Expand All @@ -422,7 +422,6 @@ extension NCCollectionViewCommon {
var isShare = false
var isMounted = false
var a11yValues: [String] = []
let existsImagePreview = utilityFileSystem.fileProviderStorageImageExists(metadata.ocId, etag: metadata.etag, userId: metadata.userId, urlBase: metadata.urlBase)

// CONTENT MODE
cell.previewImg?.layer.borderWidth = 0
Expand All @@ -433,10 +432,6 @@ extension NCCollectionViewCommon {
cell.previewImg?.contentMode = .scaleAspectFit
}

guard let metadata = self.dataSource.getMetadata(indexPath: indexPath) else {
return cell
}

if let metadataFolder {
isShare = metadata.permissions.contains(NCMetadataPermissions.permissionShared) && !metadataFolder.permissions.contains(NCMetadataPermissions.permissionShared)
isMounted = metadata.permissions.contains(NCMetadataPermissions.permissionMounted) && !metadataFolder.permissions.contains(NCMetadataPermissions.permissionMounted)
Expand Down Expand Up @@ -501,40 +496,15 @@ extension NCCollectionViewCommon {
// AVATAR
if !metadata.ownerId.isEmpty, metadata.ownerId != metadata.userId {
let fileName = NCSession.shared.getFileName(urlBase: metadata.urlBase, user: metadata.ownerId)
let fileNameLocalPath = self.utilityFileSystem.createServerUrl(serverUrl: utilityFileSystem.directoryUserData, fileName: fileName)
if let image = UIImage(contentsOfFile: fileNameLocalPath) {

if let image = NCImageCache.shared.getImageCache(key: fileName) {
cell.setSharedAvatarImage(image)
}
let user = metadata.ownerId
let ocId = metadata.ocId
let account = metadata.account

Task {
let etagResource = await database.getTableAvatarAsync(fileName: fileName)?.etag
await NCTransferCoordinator.shared.start(identifier: fileName,
priority: .userInitiated) {
let results = await NextcloudKit.shared.downloadAvatarAsync(
user: user,
fileNameLocalPath: fileNameLocalPath,
sizeImage: NCGlobal.shared.avatarSize,
avatarSizeRounded: NCGlobal.shared.avatarSizeRounded,
etagResource: etagResource,
account: account)

if results.error == .success,
let image = results.imageAvatar,
let etag = results.etag,
etag != etagResource {
await self.database.addAvatarAsync(fileName: fileName, etag: etag)
await MainActor.run {
guard
let cell = self.collectionView.cellForItem(at: indexPath) as? NCListCell,
cell.metadata?.ocId == ocId else {
return
}
cell.setSharedAvatarImage(image)
}
}
} else {
let fileNameLocalPath = self.utilityFileSystem.createServerUrl(serverUrl: utilityFileSystem.directoryUserData, fileName: fileName)

if let image = UIImage(contentsOfFile: fileNameLocalPath) {
cell.setSharedAvatarImage(image)
imageCache.addImageCache(image: image, key: fileName)
}
}
}
Expand Down
58 changes: 11 additions & 47 deletions iOSClient/Main/Collection Common/Cell/NCPhotoCell.swift
Original file line number Diff line number Diff line change
Expand Up @@ -65,54 +65,18 @@ extension NCCollectionViewCommon {

cell.metadata = metadata

// Image
//
if isPinchGestureActive || ext == global.previewExt512 || ext == global.previewExt1024 {
cell.previewImg?.image = self.utility.getImage(ocId: metadata.ocId, etag: metadata.etag, ext: ext, userId: metadata.userId, urlBase: metadata.urlBase)
}

let ocId = metadata.ocId
let etag = metadata.etag
let userId = metadata.userId
let urlBase = metadata.urlBase
let iconName = metadata.iconName
let account = metadata.account

DispatchQueue.global(qos: .userInitiated).async { [weak self, weak cell] in
guard let self else {
return
}

let image = self.utility.getImage(
ocId: ocId,
etag: etag,
ext: ext,
userId: userId,
urlBase: urlBase
)

let fallbackImage: UIImage?

if let image {
fallbackImage = image
} else if iconName.isEmpty {
fallbackImage = NCImageCache.shared.getImageFile()
if let image = imageCache.getImageCache(ocId: metadata.ocId, etag: metadata.etag, ext: ext) {
cell.previewImg?.image = image
cell.previewImg?.contentMode = .scaleAspectFill
} else if let image = utility.getImage(ocId: metadata.ocId, etag: metadata.etag, ext: ext, userId: metadata.userId, urlBase: metadata.urlBase) {
imageCache.addImageCache(ocId: metadata.ocId, etag: metadata.etag, image: image, ext: ext)
cell.previewImg?.image = image
} else {
cell.previewImg?.contentMode = .scaleAspectFit
if metadata.iconName.isEmpty {
cell.previewImg?.image = imageCache.getImageFile()
} else {
fallbackImage = self.utility.loadImage(
named: iconName,
useTypeIconFile: true,
account: account
)
}

DispatchQueue.main.async {
guard let cell,
cell.metadata?.ocId == ocId else {
return
}

cell.previewImg?.image = fallbackImage
cell.previewImg?.contentMode = image == nil ? .scaleAspectFit : .scaleAspectFill
cell.previewImg?.image = utility.loadImage(named: metadata.iconName, useTypeIconFile: true, account: metadata.account)
}
}

Expand Down
Loading
Loading