mirror of
https://github.com/nextcloud/desktop.git
synced 2024-11-28 11:48:56 +03:00
Fix swift 6 concurrency error regarding use of authAttemptState
Cannot pass a local variable into a concurrently executing Task. It's not a real issue as we are using a semaphore to wait before using this variable for anything outside of the Task block, but still. Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
This commit is contained in:
parent
0b97d6069f
commit
f3dde1907a
1 changed files with 37 additions and 38 deletions
|
@ -107,11 +107,10 @@ extension FileProviderExtension: NSFileProviderServicing, ChangeNotificationInte
|
|||
@objc func setupDomainAccount(
|
||||
user: String, userId: String, serverUrl: String, password: String
|
||||
) {
|
||||
let semaphore = DispatchSemaphore(value: 0)
|
||||
var authAttemptState = AuthenticationAttemptResultState.connectionError // default
|
||||
Task {
|
||||
let authTestNcKit = NextcloudKit()
|
||||
authTestNcKit.setup(user: user, userId: userId, password: password, urlBase: serverUrl)
|
||||
var authAttemptState = AuthenticationAttemptResultState.connectionError // default
|
||||
|
||||
// Retry a few times if we have a connection issue
|
||||
for authTimeout in AuthenticationTimeouts {
|
||||
|
@ -123,49 +122,49 @@ extension FileProviderExtension: NSFileProviderServicing, ChangeNotificationInte
|
|||
)
|
||||
try? await Task.sleep(nanoseconds: authTimeout)
|
||||
}
|
||||
semaphore.signal()
|
||||
}
|
||||
semaphore.wait()
|
||||
|
||||
switch (authAttemptState) {
|
||||
case .authenticationError:
|
||||
Logger.fileProviderExtension.info(
|
||||
"\(user, privacy: .public) authentication failed due to bad creds, stopping"
|
||||
)
|
||||
return
|
||||
case .connectionError:
|
||||
// Despite multiple connection attempts we are still getting connection issues, so quit.
|
||||
Logger.fileProviderExtension.info(
|
||||
"\(user, privacy: .public) authentication try failed, no connection."
|
||||
)
|
||||
return
|
||||
case .success:
|
||||
Logger.fileProviderExtension.info(
|
||||
switch (authAttemptState) {
|
||||
case .authenticationError:
|
||||
Logger.fileProviderExtension.info(
|
||||
"\(user, privacy: .public) authentication failed due to bad creds, stopping"
|
||||
)
|
||||
return
|
||||
case .connectionError:
|
||||
// Despite multiple connection attempts we are still getting connection issues.
|
||||
// Connection error should be provided
|
||||
Logger.fileProviderExtension.info(
|
||||
"\(user, privacy: .public) authentication try failed, no connection."
|
||||
)
|
||||
return
|
||||
case .success:
|
||||
Logger.fileProviderExtension.info(
|
||||
"""
|
||||
Authenticated! Nextcloud account set up in File Provider extension.
|
||||
User: \(user, privacy: .public) at server: \(serverUrl, privacy: .public)
|
||||
"""
|
||||
)
|
||||
}
|
||||
|
||||
let newNcAccount =
|
||||
Account(user: user, id: userId, serverUrl: serverUrl, password: password)
|
||||
guard newNcAccount != ncAccount else { return }
|
||||
ncAccount = newNcAccount
|
||||
ncKit.setup(
|
||||
account: newNcAccount.ncKitAccount,
|
||||
user: newNcAccount.username,
|
||||
userId: newNcAccount.id,
|
||||
password: newNcAccount.password,
|
||||
urlBase: newNcAccount.serverUrl,
|
||||
userAgent: "Nextcloud-macOS/FileProviderExt",
|
||||
nextcloudVersion: 25,
|
||||
delegate: nil) // TODO: add delegate methods for self
|
||||
|
||||
changeObserver = RemoteChangeObserver(
|
||||
remoteInterface: ncKit, changeNotificationInterface: self, domain: domain
|
||||
)
|
||||
ncKit.setup(delegate: changeObserver)
|
||||
signalEnumeratorAfterAccountSetup()
|
||||
}
|
||||
|
||||
let newNcAccount = Account(user: user, id: userId, serverUrl: serverUrl, password: password)
|
||||
guard newNcAccount != ncAccount else { return }
|
||||
ncAccount = newNcAccount
|
||||
ncKit.setup(
|
||||
account: newNcAccount.ncKitAccount,
|
||||
user: newNcAccount.username,
|
||||
userId: newNcAccount.id,
|
||||
password: newNcAccount.password,
|
||||
urlBase: newNcAccount.serverUrl,
|
||||
userAgent: "Nextcloud-macOS/FileProviderExt",
|
||||
nextcloudVersion: 25,
|
||||
delegate: nil) // TODO: add delegate methods for self
|
||||
|
||||
changeObserver = RemoteChangeObserver(
|
||||
remoteInterface: ncKit, changeNotificationInterface: self, domain: domain
|
||||
)
|
||||
ncKit.setup(delegate: changeObserver)
|
||||
signalEnumeratorAfterAccountSetup()
|
||||
}
|
||||
|
||||
@objc func removeAccountConfig() {
|
||||
|
|
Loading…
Reference in a new issue