Skip to content

Commit

Permalink
Fix x code16 i os18 (#3068)
Browse files Browse the repository at this point in the history
Signed-off-by: Marino Faggiana <marino@marinofaggiana.com>
  • Loading branch information
marinofaggiana authored Sep 22, 2024
1 parent 5546804 commit 12e021d
Show file tree
Hide file tree
Showing 18 changed files with 143 additions and 169 deletions.
4 changes: 2 additions & 2 deletions Nextcloud.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -5715,7 +5715,7 @@
repositoryURL = "https://github.com/realm/realm-swift";
requirement = {
kind = exactVersion;
version = 10.53.1;
version = 10.54.0;
};
};
F72CD01027A7E92400E59476 /* XCRemoteSwiftPackageReference "JGProgressHUD" */ = {
Expand Down Expand Up @@ -5819,7 +5819,7 @@
repositoryURL = "https://github.com/krzyzanowskim/OpenSSL";
requirement = {
kind = exactVersion;
version = 3.3.1000;
version = 3.3.2000;
};
};
F77BC3E9293E5268005F2B08 /* XCRemoteSwiftPackageReference "swifter" */ = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,16 +120,20 @@
debugServiceExtension = "internal"
allowLocationSimulation = "YES"
launchAutomaticallySubstyle = "2">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<RemoteRunnable
runnableDebuggingMode = "0"
BundleIdentifier = "it.twsweb.Nextcloud"
RemotePath = "/var/containers/Bundle/Application/92F13FE8-7056-4509-8468-5856675AB1CA/Nextcloud.app">
</RemoteRunnable>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "F77B0DEB1D118A16002130FE"
BuildableName = "Nextcloud.app"
BlueprintName = "Nextcloud"
ReferencedContainer = "container:Nextcloud.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</MacroExpansion>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
Expand Down
28 changes: 23 additions & 5 deletions iOSClient/Data/NCManageDatabase+Metadata.swift
Original file line number Diff line number Diff line change
Expand Up @@ -939,7 +939,7 @@ extension NCManageDatabase {
return []
}

func getResultsMetadatas(predicate: NSPredicate, sortedByKeyPath: String, ascending: Bool, arraySlice: Int = 0) -> [tableMetadata] {
func getResultsMetadatas(predicate: NSPredicate, sortedByKeyPath: String, ascending: Bool, arraySlice: Int) -> [tableMetadata] {
do {
let realm = try Realm()
let results = realm.objects(tableMetadata.self).filter(predicate).sorted(byKeyPath: sortedByKeyPath, ascending: ascending).prefix(arraySlice)
Expand Down Expand Up @@ -1059,26 +1059,44 @@ extension NCManageDatabase {
}

func getResultMetadataFromFileId(_ fileId: String?) -> tableMetadata? {
guard let fileId else { return nil }

do {
let realm = try Realm()
guard let fileId = fileId else { return nil }
guard let result = realm.objects(tableMetadata.self).filter("fileId == %@", fileId).first else { return nil }
return result
return realm.objects(tableMetadata.self).filter("fileId == %@", fileId).first
} catch let error as NSError {
NextcloudKit.shared.nkCommonInstance.writeLog("[ERROR] Could not access database: \(error)")
}
return nil
}

func getResultsMetadatas(predicate: NSPredicate, sortedByKeyPath: String? = nil, ascending: Bool = false) -> Results<tableMetadata>? {
func getResultMetadataFromOcId(_ ocId: String?) -> tableMetadata? {
guard let ocId else { return nil }

do {
let realm = try Realm()
return realm.objects(tableMetadata.self).filter("ocId == %@", ocId).first
} catch let error as NSError {
NextcloudKit.shared.nkCommonInstance.writeLog("[ERROR] Could not access database: \(error)")
}
return nil
}

func getResultsMetadatas(predicate: NSPredicate, sortedByKeyPath: String? = nil, ascending: Bool = false, freeze: Bool = false) -> Results<tableMetadata>? {
do {
let realm = try Realm()
realm.refresh()
if let sortedByKeyPath {
let results = realm.objects(tableMetadata.self).filter(predicate).sorted(byKeyPath: sortedByKeyPath, ascending: ascending)
if freeze {
return results.freeze()
}
return results
} else {
let results = realm.objects(tableMetadata.self).filter(predicate)
if freeze {
return results.freeze()
}
return results
}
} catch let error as NSError {
Expand Down
3 changes: 2 additions & 1 deletion iOSClient/Data/NCManageDatabase.swift
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,8 @@ class NCManageDatabase: NSObject {

if isAppex {
if bundleFileName == "File Provider Extension.appex" {
objectTypesAppex = [tableMetadata.self,
objectTypesAppex = [NCKeyValue.self,
tableMetadata.self,
tableLocalFile.self,
tableDirectory.self,
tableTag.self,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ struct PreviewStore {
var image: UIImage
}

class NCUploadAssetsModel: NSObject, ObservableObject, NCCreateFormUploadConflictDelegate {
class NCUploadAssetsModel: ObservableObject, NCCreateFormUploadConflictDelegate {
@Published var serverUrl: String
@Published var assets: [TLPHAsset]
@Published var previewStore: [PreviewStore] = []
Expand All @@ -65,13 +65,14 @@ class NCUploadAssetsModel: NSObject, ObservableObject, NCCreateFormUploadConflic
self.serverUrl = serverUrl
self.controller = controller
self.showHUD = true
super.init()

DispatchQueue.global(qos: .userInteractive).async {
for asset in self.assets {
guard let image = asset.fullResolutionImage?.resizeImage(size: CGSize(width: 300, height: 300), isAspectRation: true),
let localIdentifier = asset.phAsset?.localIdentifier else { continue }
self.previewStore.append(PreviewStore(id: localIdentifier, asset: asset, assetType: asset.type, fileName: "", image: image))
DispatchQueue.main.async {
self.previewStore.append(PreviewStore(id: localIdentifier, asset: asset, assetType: asset.type, fileName: "", image: image))
}
}
DispatchQueue.main.async {
self.showHUD = false
Expand Down Expand Up @@ -208,12 +209,9 @@ class NCUploadAssetsModel: NSObject, ObservableObject, NCCreateFormUploadConflic

// Check if is in upload
if let results = database.getResultsMetadatas(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@ AND fileName == %@ AND session != ''",
session.account,
serverUrl,
fileName),
sortedByKeyPath: "fileName",
ascending: false),
!results.isEmpty {
session.account,
serverUrl,
fileName), sortedByKeyPath: "fileName", ascending: false), !results.isEmpty {
continue
}

Expand Down
67 changes: 33 additions & 34 deletions iOSClient/Main/Create cloud/Upload Assets/NCUploadAssetsView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import NextcloudKit

struct NCUploadAssetsView: View {
@ObservedObject var model: NCUploadAssetsModel

@State private var showSelect = false
@State private var showUploadConflict = false
@State private var showQuickLook = false
Expand All @@ -23,12 +24,11 @@ struct NCUploadAssetsView: View {
var metadata: tableMetadata?
let gridItems: [GridItem] = [GridItem()]
let fileNamePath = NSTemporaryDirectory() + "Photo.jpg"
let utilityFileSystem = NCUtilityFileSystem()

@Environment(\.presentationMode) var presentationMode

var body: some View {
let utilityFileSystem = NCUtilityFileSystem()

NavigationView {
ZStack(alignment: .top) {
List {
Expand Down Expand Up @@ -160,40 +160,42 @@ struct NCUploadAssetsView: View {
}
}

Button(NSLocalizedString("_save_", comment: "")) {
if model.useAutoUploadFolder, model.useAutoUploadSubFolder {
model.showHUD = true
}
model.uploadInProgress.toggle()
model.save { metadatasNOConflict, metadatasUploadInConflict in
if metadatasUploadInConflict.isEmpty {
model.dismissCreateFormUploadConflict(metadatas: metadatasNOConflict)
} else {
model.metadatasNOConflict = metadatasNOConflict
model.metadatasUploadInConflict = metadatasUploadInConflict
showUploadConflict = true
Section {
Button(NSLocalizedString("_save_", comment: "")) {
if model.useAutoUploadFolder, model.useAutoUploadSubFolder {
model.showHUD = true
}
model.uploadInProgress.toggle()
model.save { metadatasNOConflict, metadatasUploadInConflict in
if metadatasUploadInConflict.isEmpty {
model.dismissCreateFormUploadConflict(metadatas: metadatasNOConflict)
} else {
model.metadatasNOConflict = metadatasNOConflict
model.metadatasUploadInConflict = metadatasUploadInConflict
showUploadConflict = true
}
}
}
.frame(maxWidth: .infinity)
.buttonStyle(ButtonRounded(disabled: model.uploadInProgress, account: model.session.account))
.listRowBackground(Color(UIColor.systemGroupedBackground))
.disabled(model.uploadInProgress)
.hiddenConditionally(isHidden: model.hiddenSave)
}
.frame(maxWidth: .infinity)
.buttonStyle(ButtonRounded(disabled: model.uploadInProgress, account: model.session.account))
.listRowBackground(Color(UIColor.systemGroupedBackground))
.disabled(model.uploadInProgress)
.hiddenConditionally(isHidden: model.hiddenSave)
}
.navigationTitle(NSLocalizedString("_upload_photos_videos_", comment: ""))
.navigationBarTitleDisplayMode(.inline)
.navigationBarItems(trailing: Button(action: {
presentationMode.wrappedValue.dismiss()
}) {
Image(systemName: "xmark")
.font(Font.system(.body).weight(.light))
.foregroundStyle(Color(NCBrandColor.shared.iconImageColor))
})
NCHUDView(showHUD: $model.showHUD, textLabel: NSLocalizedString("_wait_", comment: ""), image: "doc.badge.arrow.up", color: NCBrandColor.shared.getElement(account: model.session.account))
.offset(y: model.showHUD ? 5 : -200)
.animation(.easeOut, value: model.showHUD)
}
.navigationTitle(NSLocalizedString("_upload_photos_videos_", comment: ""))
.navigationBarTitleDisplayMode(.inline)
.navigationBarItems(trailing: Button(action: {
model.dismissView = true
}) {
Image(systemName: "xmark")
.font(Font.system(.body).weight(.light))
.foregroundStyle(Color(NCBrandColor.shared.iconImageColor))
})
NCHUDView(showHUD: $model.showHUD, textLabel: NSLocalizedString("_wait_", comment: ""), image: "doc.badge.arrow.up", color: NCBrandColor.shared.getElement(account: model.session.account))
.offset(y: model.showHUD ? 5 : -200)
.animation(.easeOut, value: model.showHUD)
}
.navigationViewStyle(StackNavigationViewStyle())
.sheet(isPresented: $showSelect) {
Expand All @@ -211,9 +213,6 @@ struct NCUploadAssetsView: View {
presentationMode.wrappedValue.dismiss()
}
}
.onTapGesture {
SceneManager.shared.getWindow(controller: model.controller)?.endEditing(true)
}
.onDisappear {
model.dismissView = true
}
Expand Down
9 changes: 5 additions & 4 deletions iOSClient/Main/NCPickerViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,11 @@ class NCPhotosPickerViewController: NSObject {

self.openPhotosPickerViewController { assets in
if !assets.isEmpty {
let serverUrl = controller.currentServerUrl()
let view = NCUploadAssetsView(model: NCUploadAssetsModel(assets: assets, serverUrl: serverUrl, controller: controller))
DispatchQueue.main.asyncAfter(deadline: .now() + 0.4) {
controller.present(UIHostingController(rootView: view), animated: true, completion: nil)
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
let model = NCUploadAssetsModel(assets: assets, serverUrl: controller.currentServerUrl(), controller: controller)
let view = NCUploadAssetsView(model: model)
let viewController = UIHostingController(rootView: view)
controller.present(viewController, animated: true, completion: nil)
}
}
}
Expand Down
14 changes: 11 additions & 3 deletions iOSClient/Media/NCMedia+CollectionViewDataSource.swift
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,15 @@ extension NCMedia: UICollectionViewDataSource {
}
}

func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
guard let metadata = dataSource.getMetadata(indexPath: indexPath) else { return }

if !utilityFileSystem.fileProviderStorageImageExists(metadata.ocId, etag: metadata.etag),
NCNetworking.shared.downloadThumbnailQueue.operations.filter({ ($0 as? NCMediaDownloadThumbnail)?.metadata.ocId == metadata.ocId }).isEmpty {
NCNetworking.shared.downloadThumbnailQueue.addOperation(NCMediaDownloadThumbnail(metadata: metadata, media: self))
}
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
guard let cell = (collectionView.dequeueReusableCell(withReuseIdentifier: "gridCell", for: indexPath) as? NCGridMediaCell) else {
fatalError("Unable to dequeue NCGridMediaCell with identifier gridCell")
Expand All @@ -94,7 +103,6 @@ extension NCMedia: UICollectionViewDataSource {

let ext = NCGlobal.shared.getSizeExtension(column: self.numberOfColumns)
let imageCache = imageCache.getImageCache(ocId: metadata.ocId, etag: metadata.etag, ext: ext)
let cost = indexPath.row

cell.backgroundColor = .secondarySystemBackground
cell.imageItem.image = imageCache
Expand All @@ -117,10 +125,10 @@ extension NCMedia: UICollectionViewDataSource {

if cell.imageItem.image == nil {
if isPinchGestureActive || ext == NCGlobal.shared.previewExt512 || ext == NCGlobal.shared.previewExt1024 {
cell.imageItem.image = getImage(metadata: metadata, cost: cost)
cell.imageItem.image = utility.getImage(ocId: metadata.ocId, etag: metadata.etag, ext: ext)
} else {
DispatchQueue.global(qos: .userInteractive).async {
let image = self.getImage(metadata: metadata, cost: cost)
let image = self.utility.getImage(ocId: metadata.ocId, etag: metadata.etag, ext: ext)
DispatchQueue.main.async {
if let currentCell = collectionView.cellForItem(at: indexPath) as? NCGridMediaCell,
currentCell.ocId == metadata.ocId, let image {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ import UIKit

extension NCMedia: UICollectionViewDataSourcePrefetching {
func collectionView(_ collectionView: UICollectionView, prefetchItemsAt indexPaths: [IndexPath]) {
guard !imageCache.isLoadingCache else { return }

let cost = indexPaths.first?.row ?? 0
let metadatas = self.dataSource.getMetadatas(indexPaths: indexPaths)
let ext = NCGlobal.shared.getSizeExtension(column: self.numberOfColumns)
Expand Down
3 changes: 2 additions & 1 deletion iOSClient/Media/NCMedia+CollectionViewDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ extension NCMedia: UICollectionViewDelegate {
// ACTIVE SERVERURL
serverUrl = metadata.serverUrl
if let results = dataSource.getTableMetadatas() {
NCViewer().view(viewController: self, metadata: metadata, metadatas: Array(results), indexMetadatas: indexPath.row, image: getImage(metadata: metadataDatasource, cost: indexPath.row, forceExt: NCGlobal.shared.previewExt1024))
let image = utility.getImage(ocId: metadata.ocId, etag: metadata.etag, ext: NCGlobal.shared.previewExt1024)
NCViewer().view(viewController: self, metadata: metadata, metadatas: Array(results), indexMetadatas: indexPath.row, image: image)
}
}
}
Expand Down
29 changes: 1 addition & 28 deletions iOSClient/Media/NCMedia.swift
Original file line number Diff line number Diff line change
Expand Up @@ -71,11 +71,7 @@ class NCMedia: UIViewController {

var lastScale: CGFloat = 1.0
var currentScale: CGFloat = 1.0
#if DEBUG
let maxColumns: Int = 10
#else
let maxColumns: Int = 7
#endif
var transitionColumns = false
var numberOfColumns: Int = 0
var lastNumberOfColumns: Int = 0
Expand Down Expand Up @@ -149,10 +145,8 @@ class NCMedia: UIViewController {
self.loadDataSource()
}

#if DEBUG
pinchGesture = UIPinchGestureRecognizer(target: self, action: #selector(handlePinchGesture(_:)))
collectionView.addGestureRecognizer(pinchGesture)
#endif

NotificationCenter.default.addObserver(forName: NSNotification.Name(rawValue: NCGlobal.shared.notificationCenterChangeUser), object: nil, queue: nil) { _ in
self.layoutType = self.database.getLayoutForView(account: self.session.account, key: NCGlobal.shared.layoutViewMedia, serverUrl: "")?.layout ?? NCGlobal.shared.mediaLayoutRatio
Expand Down Expand Up @@ -250,10 +244,9 @@ class NCMedia: UIViewController {

Task {
let tasks = await NCNetworking.shared.getAllDataTask()
for task in tasks.filter({ $0.description == NCGlobal.shared.taskDescriptionRetrievesProperties }) {
for task in tasks.filter({ $0.taskDescription == NCGlobal.shared.taskDescriptionRetrievesProperties }) {
task.cancel()
}

}
}

Expand Down Expand Up @@ -324,26 +317,6 @@ class NCMedia: UIViewController {
}
}

// MARK: - Image

func getImage(metadata: NCMediaDataSource.Metadata, cost: Int, forceExt: String? = nil) -> UIImage? {
var returnImage: UIImage?
var ext = NCGlobal.shared.getSizeExtension(column: self.numberOfColumns)
if let forceExt { ext = forceExt }

if let image = imageCache.getImageCache(ocId: metadata.ocId, etag: metadata.etag, ext: ext) {
returnImage = image
} else if let image = utility.getImage(ocId: metadata.ocId, etag: metadata.etag, ext: ext) {
returnImage = image
} else if NCNetworking.shared.downloadThumbnailQueue.operations.filter({ ($0 as? NCMediaDownloadThumbnail)?.metadata.ocId == metadata.ocId }).isEmpty {
DispatchQueue.main.async {
NCNetworking.shared.downloadThumbnailQueue.addOperation(NCMediaDownloadThumbnail(metadata: metadata, collectionView: self.collectionView, media: self, cost: cost))
}
}

return returnImage
}

func buildMediaPhotoVideo(columnCount: Int) {
var pointSize: CGFloat = 0

Expand Down
Loading

0 comments on commit 12e021d

Please sign in to comment.