44// SPDX-License-Identifier: GPL-3.0-or-later
55
66import UIKit
7- import UniformTypeIdentifiers
87import NextcloudKit
98import LucidBanner
109import SwiftUI
@@ -50,8 +49,8 @@ class NCShareExtension: UIViewController {
5049 let global = NCGlobal . shared
5150 var maintenanceMode : Bool = false
5251 var token : Int ?
53- var banner : LucidBanner ?
5452 var sceneIdentifier : String = UUID ( ) . uuidString
53+ var banner : LucidBanner ?
5554
5655 // MARK: - View Life Cycle
5756
@@ -82,7 +81,7 @@ class NCShareExtension: UIViewController {
8281 uploadView. layer. cornerRadius = 10
8382
8483 uploadLabel. text = NSLocalizedString ( " _upload_ " , comment: " " )
85- uploadLabel. textColor = . systemBlue
84+ uploadLabel. textColor = NCBrandColor . shared . label
8685 let uploadGesture = UITapGestureRecognizer ( target: self , action: #selector( actionUpload ( _: ) ) )
8786 uploadView. addGestureRecognizer ( uploadGesture)
8887
@@ -93,13 +92,6 @@ class NCShareExtension: UIViewController {
9392
9493 NCBrandColor . shared. createUserColors ( )
9594
96- registerForTraitChanges ( [ UITraitUserInterfaceStyle . self] ) { ( self : Self, _) in
97- guard !self . maintenanceMode else {
98- return
99- }
100- self . updateAppearance ( )
101- }
102-
10395 NotificationCenter . default. addObserver ( forName: UIApplication . willEnterForegroundNotification, object: nil , queue: nil ) { _ in
10496 if NCPreferences ( ) . presentPasscode {
10597 NCPasscode . shared. presentPasscode ( viewController: self , delegate: self ) {
@@ -123,7 +115,7 @@ class NCShareExtension: UIViewController {
123115 }
124116
125117 NCNetworking . shared. setupScene ( sceneIdentifier: sceneIdentifier, controller: self )
126-
118+
127119 if let windowScene = view. window? . windowScene {
128120 banner = LucidBannerRegistry . shared. banner ( for: windowScene)
129121 }
@@ -151,33 +143,20 @@ class NCShareExtension: UIViewController {
151143 return
152144 }
153145
154- // Keep the Share extension visually hidden until we know whether this is
155- // an Assistant text handoff or a normal file upload flow. This avoids the
156- // visible open-and-close flash when the extension only needs to redirect text.
157- view. alpha = 0
158-
159- Task { @MainActor in
160- if await handleAssistantSharedTextIfNeeded ( inputItems: inputItems) {
161- return
162- }
163-
164- self . view. alpha = 1
165-
166- NCFilesExtensionHandler ( items: inputItems) { fileNames in
167- self . filesName = fileNames
168- DispatchQueue . main. async {
169- self . setCommandView ( )
170- }
146+ NCFilesExtensionHandler ( items: inputItems) { fileNames in
147+ self . filesName = fileNames
148+ DispatchQueue . main. async {
149+ self . setCommandView ( )
171150 }
151+ }
172152
173- if NCPreferences ( ) . presentPasscode {
174- NCPasscode . shared. presentPasscode ( viewController: self , delegate: self ) {
175- NCPasscode . shared. enableTouchFaceID ( )
176- }
153+ if NCPreferences ( ) . presentPasscode {
154+ NCPasscode . shared. presentPasscode ( viewController: self , delegate: self ) {
155+ NCPasscode . shared. enableTouchFaceID ( )
177156 }
178-
179- self . collectionView. reloadData ( )
180157 }
158+
159+ self . collectionView. reloadData ( )
181160 }
182161
183162 override func viewWillTransition( to size: CGSize , with coordinator: UIViewControllerTransitionCoordinator ) {
@@ -188,9 +167,13 @@ class NCShareExtension: UIViewController {
188167 }
189168 }
190169
191- private func updateAppearance( ) {
192- collectionView. visibleCells. forEach { $0. setNeedsLayout ( ) }
193- tableView. visibleCells. forEach { $0. setNeedsLayout ( ) }
170+ override func traitCollectionDidChange( _ previousTraitCollection: UITraitCollection ? ) {
171+ super. traitCollectionDidChange ( previousTraitCollection)
172+
173+ if !maintenanceMode {
174+ collectionView. reloadData ( )
175+ tableView. reloadData ( )
176+ }
194177 }
195178
196179 // MARK: -
@@ -199,7 +182,7 @@ class NCShareExtension: UIViewController {
199182 if let error {
200183 extensionContext? . cancelRequest ( withError: error)
201184 } else {
202- extensionContext? . completeRequest ( returningItems: extensionContext? . inputItems, completionHandler: nil )
185+ self . extensionContext? . completeRequest ( returningItems: self . extensionContext? . inputItems, completionHandler: nil )
203186 }
204187 }
205188
@@ -223,11 +206,11 @@ class NCShareExtension: UIViewController {
223206
224207 // BACK BUTTON
225208 let backButton = UIButton ( type: . custom)
226- backButton. setImage ( UIImage ( named: " back " ) , for: . normal)
227- backButton. tintColor = . systemBlue
209+ backButton. setImage ( UIImage ( named: " back " ) ? . withTintColor ( NCBrandColor . shared . iconImageColor ) , for: . normal)
210+ backButton. tintColor = NCBrandColor . shared . label
228211 backButton. semanticContentAttribute = . forceLeftToRight
229212 backButton. setTitle ( " " + NSLocalizedString( " _back_ " , comment: " " ) , for: . normal)
230- backButton. setTitleColor ( . systemBlue , for: . normal)
213+ backButton. setTitleColor ( NCBrandColor . shared . label , for: . normal)
231214 backButton. action ( for: . touchUpInside) { _ in
232215 while self . serverUrl. last != " / " { self . serverUrl. removeLast ( ) }
233216 self . serverUrl. removeLast ( )
@@ -241,6 +224,7 @@ class NCShareExtension: UIViewController {
241224 self . setNavigationBar ( navigationTitle: navigationTitle)
242225 }
243226
227+ /*
244228 let image = utility.loadUserImage(for: tblAccount.user, displayName: tblAccount.displayName, urlBase: tblAccount.urlBase)
245229 let profileButton = UIButton(type: .custom)
246230 profileButton.setImage(image, for: .normal)
@@ -268,7 +252,9 @@ class NCShareExtension: UIViewController {
268252 space.width = 20
269253 navItems.append(contentsOf: [UIBarButtonItem(customView: backButton), space])
270254 }
271- navigationItem. setLeftBarButtonItems ( navItems, animated: true )
255+ */
256+ // navigationItem.setLeftBarButtonItems(navItems, animated: true)
257+ navigationItem. setLeftBarButtonItems ( [ UIBarButtonItem ( customView: backButton) ] , animated: true )
272258 }
273259
274260 func setCommandView( ) {
@@ -297,7 +283,7 @@ class NCShareExtension: UIViewController {
297283 guard let capabilities = NCNetworking . shared. capabilities [ session. account] else {
298284 return
299285 }
300- let alertController = UIAlertController . createFolderWith ( serverUrl: serverUrl, session: session, capabilities: capabilities) { error in
286+ let alertController = UIAlertController . createFolder ( serverUrl: serverUrl, session: session, capabilities: capabilities, scene : self . view . window ? . windowScene ) { error in
301287 if error == . success {
302288 Task {
303289 await self . loadFolder ( )
@@ -396,8 +382,14 @@ extension NCShareExtension {
396382 guard let window = self . view. window else {
397383 return
398384 }
385+ let horizontalLayout = horizontalLayoutBanner ( bounds: window. bounds,
386+ safeAreaInsets: window. safeAreaInsets,
387+ idiom: window. traitCollection. userInterfaceIdiom)
388+
399389 let payload = LucidBannerPayload ( stage: . button,
390+ backgroundColor: Color ( . systemBackground) ,
400391 vPosition: . center,
392+ horizontalLayout: horizontalLayout,
401393 blocksTouches: true )
402394 ( banner, token) = showUploadBanner ( windowScene: window. windowScene,
403395 payload: payload,
@@ -427,10 +419,11 @@ extension NCShareExtension {
427419 banner? . update ( payload: LucidBannerPayload . Update ( subtitle: error? . errorDescription, stage: . error) , for: self . token)
428420 }
429421
430- Task { @MainActor in
431- try ? await Task . sleep ( for: . seconds( 2 ) )
432- banner? . dismiss ( )
433- extensionContext? . completeRequest ( returningItems: extensionContext? . inputItems, completionHandler: nil )
422+ if let banner, let token {
423+ Task { @MainActor in
424+ try ? await Task . sleep ( for: . seconds( 2 ) )
425+ banner. dismiss ( )
426+ }
434427 }
435428 }
436429
0 commit comments