123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- //
- // NCUploadAssets.swift
- // Nextcloud
- //
- // Created by Marino Faggiana on 04/01/23.
- // Copyright © 2023 Marino Faggiana. All rights reserved.
- //
- import SwiftUI
- class NCHostingUploadAssetsView: NSObject {
- @objc func makeShipDetailsUI(assets: [PHAsset], cryptated: Bool, session: String, userBaseUrl: NCUserBaseUrl, serverUrl: String) -> UIViewController {
- let uploadAssets = NCUploadAssets(assets: assets, cryptated: cryptated, session: session, userBaseUrl: userBaseUrl, serverUrl: serverUrl)
- let details = UploadAssetsView(uploadAssets)
- let vc = UIHostingController(rootView: details)
- vc.title = NSLocalizedString("_upload_photos_videos_", comment: "")
- return vc
- }
- }
- class NCUploadAssets: ObservableObject {
- internal var assets: [PHAsset]
- internal var cryptated: Bool
- internal var session: String
- internal var userBaseUrl: NCUserBaseUrl
- internal var serverUrl: String
- init(assets: [PHAsset], cryptated: Bool, session: String, userBaseUrl: NCUserBaseUrl, serverUrl: String) {
- self.assets = assets
- self.cryptated = cryptated
- self.session = session
- self.userBaseUrl = userBaseUrl
- self.serverUrl = serverUrl
- }
- }
- // MARK: - Delegate
- extension NCUploadAssets: NCSelectDelegate {
- func dismissSelect(serverUrl: String?, metadata: tableMetadata?, type: String, items: [Any], overwrite: Bool, copy: Bool, move: Bool) {
- if let serverUrl = serverUrl {
- CCUtility.setDirectoryScanDocument(serverUrl)
- self.serverUrl = serverUrl
- }
- }
- }
- struct UploadAssetsView: View {
- @State var isPresentedSelect = false
- @ObservedObject var uploadAssets: NCUploadAssets
- init(_ uploadAssets: NCUploadAssets) {
- self.uploadAssets = uploadAssets
- }
- var body: some View {
- GeometryReader { geo in
- ZStack(alignment: .top) {
- List {
- Section(header: Text(NSLocalizedString("_save_path_", comment: ""))) {
- HStack {
- Label {
- if NCUtilityFileSystem.shared.getHomeServer(urlBase: uploadAssets.userBaseUrl.urlBase, userId: uploadAssets.userBaseUrl.userId) == uploadAssets.serverUrl {
- Text("/")
- .frame(maxWidth: .infinity, alignment: .trailing)
- } else {
- Text((uploadAssets.serverUrl as NSString).lastPathComponent)
- .frame(maxWidth: .infinity, alignment: .trailing)
- }
- } icon: {
- Image("folder")
- .renderingMode(.template)
- .resizable()
- .scaledToFit()
- .foregroundColor(Color(NCBrandColor.shared.brand))
- }
- }
- .contentShape(Rectangle())
- .onTapGesture {
- isPresentedSelect = true
- }
- .complexModifier { view in
- if #available(iOS 16, *) {
- view.alignmentGuide(.listRowSeparatorLeading) { _ in
- return 0
- }
- }
- }
- }
- }
- }
- }
- .background(Color(UIColor.systemGroupedBackground))
- .sheet(isPresented: $isPresentedSelect) {
- NCSelectUploadAssets(delegate: uploadAssets)
- }
- }
- }
- // MARK: - UIViewControllerRepresentable
- struct NCSelectUploadAssets: UIViewControllerRepresentable {
- typealias UIViewControllerType = UINavigationController
- @ObservedObject var delegate: NCUploadAssets
- func makeUIViewController(context: Context) -> UINavigationController {
- let storyboard = UIStoryboard(name: "NCSelect", bundle: nil)
- let navigationController = storyboard.instantiateInitialViewController() as? UINavigationController
- let viewController = navigationController?.topViewController as? NCSelect
- viewController?.delegate = delegate
- viewController?.typeOfCommandView = .selectCreateFolder
- viewController?.includeDirectoryE2EEncryption = true
- return navigationController!
- }
- func updateUIViewController(_ uiViewController: UINavigationController, context: Context) { }
- }
- // MARK: - Preview
- struct UploadAssetsView_Previews: PreviewProvider {
- static var previews: some View {
- if let appDelegate = UIApplication.shared.delegate as? AppDelegate {
- let uploadAssets = NCUploadAssets(assets: [], cryptated: false, session: "", userBaseUrl: appDelegate, serverUrl: "/")
- UploadAssetsView(uploadAssets)
- }
- }
- }
|