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
18 changes: 8 additions & 10 deletions Nextcloud.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,6 @@
F70557B72ED44E2700135623 /* LucidBanner in Frameworks */ = {isa = PBXBuildFile; productRef = F70557B62ED44E2700135623 /* LucidBanner */; };
F70557B92ED44E4700135623 /* LucidBanner in Frameworks */ = {isa = PBXBuildFile; productRef = F70557B82ED44E4700135623 /* LucidBanner */; };
F70557BD2ED44F1800135623 /* UploadBannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F70557BB2ED44F1800135623 /* UploadBannerView.swift */; };
F70557BE2ED44F1800135623 /* ErrorBannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F70557BA2ED44F1800135623 /* ErrorBannerView.swift */; };
F70557BF2ED44F1800135623 /* UploadBannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F70557BB2ED44F1800135623 /* UploadBannerView.swift */; };
F70716E62987F81500E72C1D /* DocumentActionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F70716E52987F81500E72C1D /* DocumentActionViewController.swift */; };
F70716ED2987F81500E72C1D /* File Provider Extension UI.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = F70716E32987F81500E72C1D /* File Provider Extension UI.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
Expand Down Expand Up @@ -328,6 +327,7 @@
F7386E482DA90E0F009A00F6 /* NCAppVersionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7386E452DA90E02009A00F6 /* NCAppVersionManager.swift */; };
F73ADD1C265546890069EA0D /* SwiftEntryKit in Frameworks */ = {isa = PBXBuildFile; productRef = F73ADD1B265546890069EA0D /* SwiftEntryKit */; };
F73ADD2126554F8E0069EA0D /* SwiftEntryKit in Frameworks */ = {isa = PBXBuildFile; productRef = F73ADD2026554F8E0069EA0D /* SwiftEntryKit */; };
F73BC74F2F23811E003170C2 /* BannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7DF7B3E2F1A2EE400514020 /* BannerView.swift */; };
F73CB3B222E072A000AD728E /* NCShareHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = F73CB3B122E072A000AD728E /* NCShareHeaderView.xib */; };
F73D11FA253C5F4800DF9BEC /* NCViewerNextcloudText.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F73D11F9253C5F4800DF9BEC /* NCViewerNextcloudText.storyboard */; };
F73EF7A72B0223900087E6E9 /* NCManageDatabase+Comments.swift in Sources */ = {isa = PBXBuildFile; fileRef = F73EF7A62B0223900087E6E9 /* NCManageDatabase+Comments.swift */; };
Expand Down Expand Up @@ -843,7 +843,7 @@
F7D7A7712DCDD437003D2007 /* NCManageDatabase+AutoUpload.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7D7A76B2DCDD437003D2007 /* NCManageDatabase+AutoUpload.swift */; };
F7D7A7722DCDD437003D2007 /* NCManageDatabase+AutoUpload.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7D7A76B2DCDD437003D2007 /* NCManageDatabase+AutoUpload.swift */; };
F7D890752BD25C570050B8A6 /* NCCollectionViewCommon+DragDrop.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7D890742BD25C570050B8A6 /* NCCollectionViewCommon+DragDrop.swift */; };
F7DF7B3F2F1A2EF900514020 /* MessageBannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7DF7B3E2F1A2EE400514020 /* MessageBannerView.swift */; };
F7DF7B3F2F1A2EF900514020 /* BannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7DF7B3E2F1A2EE400514020 /* BannerView.swift */; };
F7DF7B422F1A36C100514020 /* HelperBanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7DF7B412F1A36B600514020 /* HelperBanner.swift */; };
F7DF7B432F1A373E00514020 /* HelperBanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7DF7B412F1A36B600514020 /* HelperBanner.swift */; };
F7E0710128B13BB00001B882 /* DashboardData.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7E0710028B13BB00001B882 /* DashboardData.swift */; };
Expand Down Expand Up @@ -1296,7 +1296,6 @@
F704B5E42430AA8000632F5F /* NCCreateFormUploadConflict.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCCreateFormUploadConflict.swift; sourceTree = "<group>"; };
F704B5E62430C06700632F5F /* NCCreateFormUploadConflictCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NCCreateFormUploadConflictCell.xib; sourceTree = "<group>"; };
F704B5E82430C0B800632F5F /* NCCreateFormUploadConflictCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCCreateFormUploadConflictCell.swift; sourceTree = "<group>"; };
F70557BA2ED44F1800135623 /* ErrorBannerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ErrorBannerView.swift; sourceTree = "<group>"; };
F70557BB2ED44F1800135623 /* UploadBannerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UploadBannerView.swift; sourceTree = "<group>"; };
F70716E32987F81500E72C1D /* File Provider Extension UI.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "File Provider Extension UI.appex"; sourceTree = BUILT_PRODUCTS_DIR; };
F70716E52987F81500E72C1D /* DocumentActionViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DocumentActionViewController.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1763,7 +1762,7 @@
F7D7A76B2DCDD437003D2007 /* NCManageDatabase+AutoUpload.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NCManageDatabase+AutoUpload.swift"; sourceTree = "<group>"; };
F7D890742BD25C570050B8A6 /* NCCollectionViewCommon+DragDrop.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NCCollectionViewCommon+DragDrop.swift"; sourceTree = "<group>"; };
F7DE9AB01F482FA5008DFE10 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Localizable.strings; sourceTree = "<group>"; };
F7DF7B3E2F1A2EE400514020 /* MessageBannerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageBannerView.swift; sourceTree = "<group>"; };
F7DF7B3E2F1A2EE400514020 /* BannerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BannerView.swift; sourceTree = "<group>"; };
F7DF7B412F1A36B600514020 /* HelperBanner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HelperBanner.swift; sourceTree = "<group>"; };
F7E0710028B13BB00001B882 /* DashboardData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashboardData.swift; sourceTree = "<group>"; };
F7E2B64E2DDCC5C30075B4D0 /* NCMedia+TransferDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NCMedia+TransferDelegate.swift"; sourceTree = "<group>"; };
Expand Down Expand Up @@ -2243,11 +2242,10 @@
F70557BC2ED44F1800135623 /* Lucid Banner */ = {
isa = PBXGroup;
children = (
F70557BA2ED44F1800135623 /* ErrorBannerView.swift */,
F7DF7B412F1A36B600514020 /* HelperBanner.swift */,
F7DF7B3E2F1A2EE400514020 /* BannerView.swift */,
F714A1462ED84AF00050A43B /* HudBannerView.swift */,
F7DF7B3E2F1A2EE400514020 /* MessageBannerView.swift */,
F70557BB2ED44F1800135623 /* UploadBannerView.swift */,
F7DF7B412F1A36B600514020 /* HelperBanner.swift */,
);
path = "Lucid Banner";
sourceTree = "<group>";
Expand Down Expand Up @@ -4239,6 +4237,7 @@
F7D4BF302CA2E8D800A5E746 /* TOPasscodeViewControllerAnimatedTransitioning.m in Sources */,
F7D4BF312CA2E8D800A5E746 /* TOPasscodeSettingsViewController.m in Sources */,
F71916122E2901FB00E13E96 /* NCNetworking+Upload.swift in Sources */,
F73BC74F2F23811E003170C2 /* BannerView.swift in Sources */,
F7D4BF322CA2E8D800A5E746 /* TOPasscodeCircleImage.m in Sources */,
F7CAFE192F168F6000DB35A5 /* NCDebouncer.swift in Sources */,
F7D4BF332CA2E8D800A5E746 /* TOPasscodeView.m in Sources */,
Expand Down Expand Up @@ -4439,7 +4438,7 @@
F733598125C1C188002ABA72 /* NCAskAuthorization.swift in Sources */,
370D26AF248A3D7A00121797 /* NCCellProtocol.swift in Sources */,
F32FADA92D1176E3007035E2 /* UIButton+Extension.swift in Sources */,
F7DF7B3F2F1A2EF900514020 /* MessageBannerView.swift in Sources */,
F7DF7B3F2F1A2EF900514020 /* BannerView.swift in Sources */,
F768822C2C0DD1E7001CF441 /* NCPreferences.swift in Sources */,
F7CAFE1D2F17A35F00DB35A5 /* NCNetworking+Actor.swift in Sources */,
F71CD6CA2930D7B1006C95C1 /* NCApplicationHandle.swift in Sources */,
Expand Down Expand Up @@ -4572,7 +4571,6 @@
F7A0D1352591FBC5008F8A13 /* String+Extension.swift in Sources */,
F7CEE6012BA9A5C9003EFD89 /* NCTrashGridCell.swift in Sources */,
F70557BD2ED44F1800135623 /* UploadBannerView.swift in Sources */,
F70557BE2ED44F1800135623 /* ErrorBannerView.swift in Sources */,
F7F9D1BB25397CE000D9BFF5 /* NCViewer.swift in Sources */,
F7E7AEA52BA32C6500512E52 /* NCCollectionViewDownloadThumbnail.swift in Sources */,
AF730AF827834B1400B7520E /* NCShare+NCCellDelegate.swift in Sources */,
Expand Down Expand Up @@ -6015,7 +6013,7 @@
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/marinofaggiana/LucidBanner";
requirement = {
branch = main;
branch = payload;
kind = branch;
};
};
Expand Down
59 changes: 41 additions & 18 deletions Share/NCShareExtension.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import UIKit
import NextcloudKit
import LucidBanner
import SwiftUI

enum NCShareExtensionError: Error {
case cancel, fileUpload, noAccount, noFiles, versionMismatch
Expand Down Expand Up @@ -367,16 +368,24 @@ extension NCShareExtension {
@MainActor
func uploadAndExit() async {
var error: NKError?
token = showUploadBanner(scene: self.view.window?.windowScene, blocksTouches: true)
let payload = LucidBannerPayload(backgroundColor: Color(.systemBackground),
vPosition: .center,
verticalMargin: 0,
blocksTouches: true,
draggable: false)
token = showUploadBanner(scene: self.view.window?.windowScene,
payload: payload,
allowMinimizeOnTap: false
)

for metadata in self.uploadMetadata {
// BANNER
LucidBanner.shared.update(
let payloadUpdate = LucidBannerPayload.Update(
title: NSLocalizedString("_upload_file_", comment: "") + " \(self.counterUploaded + 1) " + NSLocalizedString("_of_", comment: "") + " \(self.filesName.count)",
systemImage: "arrowshape.up.circle",
imageAnimation: .breathe,
progress: 0
)
progress: 0)
LucidBanner.shared.update(payload: payloadUpdate)

error = await self.upload(metadata: metadata)
if error != .success {
Expand All @@ -385,9 +394,14 @@ extension NCShareExtension {
}

if error == .success {
LucidBanner.shared.update(stage: .success, for: self.token)
let payloadUpdate = LucidBannerPayload.Update(stage: .success)
LucidBanner.shared.update(payload: payloadUpdate, for: self.token)
} else {
LucidBanner.shared.update(subtitle: error?.errorDescription, stage: .error, for: self.token)
let payload = LucidBannerPayload.Update(
subtitle: error?.errorDescription,
stage: .error
)
LucidBanner.shared.update(payload: payload, for: self.token)
}

LucidBanner.shared.dismiss(after: 2) {
Expand Down Expand Up @@ -425,32 +439,39 @@ extension NCShareExtension {
if metadata.isDirectoryE2EE {
error = await NCNetworkingE2EEUpload().upload(metadata: metadata, session: session, controller: self, stageBanner: nil, tokenBanner: self.token)
} else if metadata.chunk > 0 {
LucidBanner.shared.update(
let payload = LucidBannerPayload.Update(
systemImage: "gearshape.arrow.triangle.2.circlepath",
imageAnimation: .rotate,
for: self.token)
imageAnimation: .rotate
)
LucidBanner.shared.update(payload: payload, for: self.token)
let task = Task { () -> (account: String, file: NKFile?, error: NKError) in
let results = await NCNetworking.shared.uploadChunkFile(metadata: metadata) { total, counter in
Task {@MainActor in
LucidBanner.shared.update(progress: Double(counter / total), for: self.token)
let progress = Double(counter) / Double(total)
LucidBanner.shared.update(payload: LucidBannerPayload.Update(progress: progress), for: self.token)
}
} uploadStart: { _ in
Task {@MainActor in
LucidBanner.shared.update(
let payload = LucidBannerPayload.Update(
systemImage: "arrowshape.up.circle",
imageAnimation: .breathe,
for: self.token)
imageAnimation: .breathe
)
LucidBanner.shared.update(payload: payload, for: self.token)
}
} uploadProgressHandler: { _, _, progress in
Task {@MainActor in
LucidBanner.shared.update(progress: progress, for: self.token)
LucidBanner.shared.update(
payload: LucidBannerPayload.Update(progress: progress),
for: self.token)
LucidBanner.shared.update(payload: payload, for: self.token)
}
} assembling: {
Task {@MainActor in
LucidBanner.shared.update(
let payload = LucidBannerPayload.Update(
systemImage: "gearshape.arrow.triangle.2.circlepath",
imageAnimation: .rotate,
for: self.token)
imageAnimation: .rotate
)
LucidBanner.shared.update(payload: payload, for: self.token)
}
}

Expand All @@ -472,7 +493,9 @@ extension NCShareExtension {
dateModificationFile: metadata.date as Date) { _ in
} progressHandler: { _, _, fractionCompleted in
Task {@MainActor in
LucidBanner.shared.update(progress: fractionCompleted, for: self.token)
LucidBanner.shared.update(
payload: LucidBannerPayload.Update(progress: fractionCompleted),
for: self.token)
}
}
error = results.error
Expand Down
2 changes: 1 addition & 1 deletion iOSClient/Account/NCAccount.swift
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ class NCAccount: NSObject {
return
}

NCContentPresenter().showCustomMessage(title: "", message: String(format: NSLocalizedString("_account_unauthorized_", comment: ""), account), priority: .high, delay: global.dismissAfterSecondLong, type: .error)
await showErrorBanner(controller: controller, text: "_account_unauthorized_")

let resultsWipe = await NextcloudKit.shared.getRemoteWipeStatusAsync(serverUrl: tblAccount.urlBase, token: token, account: account) { task in
Task {
Expand Down
8 changes: 4 additions & 4 deletions iOSClient/Activity/NCActivity.swift
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ class NCActivity: UIViewController, NCSharePagingContent {
self.loadComments()
} else {
Task {
await showErrorBanner(controller: self.tabBarController, errorDescription: error.errorDescription)
await showErrorBanner(controller: self.tabBarController, text: error.errorDescription)
}
}
}
Expand Down Expand Up @@ -439,7 +439,7 @@ extension NCActivity {
self.database.addComments(comments, account: metadata.account, objectId: metadata.fileId)
} else if error.errorCode != NCGlobal.shared.errorResourceNotFound {
Task {
await showErrorBanner(controller: self.tabBarController, errorDescription: error.errorDescription)
await showErrorBanner(controller: self.tabBarController, text: error.errorDescription)
}
}

Expand Down Expand Up @@ -579,7 +579,7 @@ extension NCActivity: NCShareCommentsCellDelegate {
self.loadComments()
} else {
Task {@MainActor in
await showErrorBanner(controller: self.tabBarController, errorDescription: error.errorDescription)
await showErrorBanner(controller: self.tabBarController, text: error.errorDescription)
}
}
}
Expand Down Expand Up @@ -611,7 +611,7 @@ extension NCActivity: NCShareCommentsCellDelegate {
self.loadComments()
} else {
Task {
await showErrorBanner(controller: self.tabBarController, errorDescription: error.errorDescription)
await showErrorBanner(controller: self.tabBarController, text: error.errorDescription)
}
}
}
Expand Down
3 changes: 1 addition & 2 deletions iOSClient/Activity/NCActivityTableViewCell.swift
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,8 @@ extension NCActivityTableViewCell: UICollectionViewDelegate {
viewController.filePath = result.filePath
(responder as? UIViewController)!.navigationController?.pushViewController(viewController, animated: true)
} else {
let error = NKError(errorCode: NCGlobal.shared.errorInternalError, errorDescription: "_trash_file_not_found_")
Task {
await showErrorBanner(controller: viewController.controller, errorDescription: error.errorDescription)
await showErrorBanner(controller: viewController.controller, text: "_trash_file_not_found_")
}
}
}
Expand Down
Loading
Loading