Skip to content

Commit 53d0fff

Browse files
authored
fix: resolve strict concurrency errors (#3731)
* chore: add @mainactor attribuete to DeviceInfo * chore: add @mainactor attribuete to DeviceInfo * chore: update swift tool to 5.9 * chore: temporarily enable experimentation flags * chore: update minimum xcode version * fix(logging): fix Swift 6 compiler error (#3691) * resolve build errors with xcode 15.0.1 * fix build error * fix incorrect storage user agent string * refactor cloudwatch logging stream name formatter * revert experimental settings * fix swift lint warning * resolve review comments * fix formatting issues * resolve review comments
1 parent 93bc4e0 commit 53d0fff

File tree

61 files changed

+350
-258
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+350
-258
lines changed

Amplify/Core/Support/DeviceInfo.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import AppKit
2828
/// ```
2929
///
3030
/// - Tag: DeviceInfo
31+
@MainActor
3132
public struct DeviceInfo {
3233

3334
private init() {}

Amplify/DevMenu/Data/DeviceInfoHelper.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import Foundation
1010
import UIKit
1111

1212
/// Helper class to fetch information for Device Information Screen
13+
@MainActor
1314
struct DeviceInfoHelper {
1415

1516
static func getDeviceInformation() -> [DeviceInfoItem] {

Amplify/DevMenu/Data/IssueInfo.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import Foundation
1010

1111
/// Struct consisting of information required to report an issue
12+
@MainActor
1213
struct IssueInfo {
1314

1415
private var includeEnvironmentInfo: Bool

Amplify/DevMenu/Data/IssueInfoHelper.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import Foundation
1010

1111
/// Helper class to generate markdown text for issue reporting
12+
@MainActor
1213
struct IssueInfoHelper {
1314

1415
private static let issueDescTitle = "Issue Description"

Amplify/DevMenu/Trigger/LongPressGestureRecognizer.swift

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,5 @@ class LongPressGestureRecognizer: NSObject, TriggerRecognizer, UIGestureRecogniz
4747
uiWindow?.addGestureRecognizer(recognizer)
4848
recognizer.delegate = self
4949
}
50-
51-
deinit {
52-
if let window = uiWindow {
53-
window.removeGestureRecognizer(recognizer)
54-
}
55-
uiWindow = nil
56-
triggerDelegate = nil
57-
}
5850
}
5951
#endif

Amplify/DevMenu/View/IssueReporter.swift

Lines changed: 31 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -95,36 +95,42 @@ struct IssueReporter: View {
9595

9696
/// Open Amplify iOS issue logging screen on Github
9797
private func reportToGithub() {
98-
let issueDescriptionMarkdown =
99-
IssueInfoHelper.generateMarkdownForIssue(
100-
issue: IssueInfo(issueDescription: issueDescription,
101-
includeEnvInfo: includeEnvInfo,
102-
includeDeviceInfo: includeDeviceInfo))
103-
104-
let urlString = amplifyIosNewIssueUrl + issueDescriptionMarkdown
105-
guard let url = urlString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {
106-
showAlertIfInvalidURL = true
107-
return
108-
}
109-
guard let urlToOpen = URL(string: url) else {
110-
showAlertIfInvalidURL = true
111-
return
98+
Task {
99+
let issue = await IssueInfo(issueDescription: issueDescription,
100+
includeEnvInfo: includeEnvInfo,
101+
includeDeviceInfo: includeDeviceInfo)
102+
let issueDescriptionMarkdown =
103+
await IssueInfoHelper.generateMarkdownForIssue(
104+
issue: issue)
105+
106+
let urlString = amplifyIosNewIssueUrl + issueDescriptionMarkdown
107+
guard let url = urlString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {
108+
showAlertIfInvalidURL = true
109+
return
110+
}
111+
guard let urlToOpen = URL(string: url) else {
112+
showAlertIfInvalidURL = true
113+
return
114+
}
115+
116+
await UIApplication.shared.open(urlToOpen)
112117
}
113118

114-
UIApplication.shared.open(urlToOpen)
115119
}
116120

117121
/// Copy issue as a markdown string to clipboard
118122
private func copyToClipboard() {
119-
let issue = IssueInfo(issueDescription: issueDescription,
120-
includeEnvInfo: includeEnvInfo,
121-
includeDeviceInfo: includeDeviceInfo)
122-
let value = IssueInfoHelper.generateMarkdownForIssue(issue: issue)
123-
#if os(iOS)
124-
UIPasteboard.general.string = value
125-
#elseif canImport(AppKit)
126-
NSPasteboard.general.setString(value, forType: .string)
127-
#endif
123+
Task {
124+
let issue = await IssueInfo(issueDescription: issueDescription,
125+
includeEnvInfo: includeEnvInfo,
126+
includeDeviceInfo: includeDeviceInfo)
127+
let value = await IssueInfoHelper.generateMarkdownForIssue(issue: issue)
128+
#if os(iOS)
129+
UIPasteboard.general.string = value
130+
#elseif canImport(AppKit)
131+
NSPasteboard.general.setString(value, forType: .string)
132+
#endif
133+
}
128134
}
129135
}
130136

@@ -166,6 +172,7 @@ final class MultilineTextField: UIViewRepresentable {
166172
return view
167173
}
168174

175+
@MainActor
169176
@objc func dismissKeyboard() {
170177
UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder),
171178
to: nil, from: nil, for: nil)

AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/ASF/ASFDeviceInfo.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import Foundation
99
import Amplify
1010

11+
@MainActor
1112
struct ASFDeviceInfo: ASFDeviceBehavior {
1213

1314
let id: String

AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/ASF/AdvancedSecurityBehavior.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ protocol AdvancedSecurityBehavior {
1515
configuration: UserPoolConfigurationData) throws -> String
1616
}
1717

18-
protocol ASFDeviceBehavior {
18+
protocol ASFDeviceBehavior: Sendable {
1919

2020
var id: String { get }
2121

AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/ASF/CognitoUserPoolASF+KeyChain.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ extension CognitoUserPoolASF {
3232
static func encodedContext(username: String,
3333
asfDeviceId: String,
3434
asfClient: AdvancedSecurityBehavior,
35-
userPoolConfiguration: UserPoolConfigurationData) -> String? {
36-
let deviceInfo: ASFDeviceBehavior = ASFDeviceInfo(id: asfDeviceId)
35+
userPoolConfiguration: UserPoolConfigurationData) async -> String? {
36+
let deviceInfo: ASFDeviceBehavior = await ASFDeviceInfo(id: asfDeviceId)
3737
let appInfo: ASFAppInfoBehavior = ASFAppInfo()
3838

3939
do {

AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/Actions/RefreshAuthorizationSession/UserPool/RefreshUserPoolTokens.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ struct RefreshUserPoolTokens: Action {
4141
for: existingSignedIndata.username,
4242
credentialStoreClient: authEnv.credentialsClient)
4343

44-
let input = InitiateAuthInput.refreshAuthInput(
44+
let input = await InitiateAuthInput.refreshAuthInput(
4545
username: existingSignedIndata.username,
4646
refreshToken: existingTokens.refreshToken,
4747
clientMetadata: [:],

0 commit comments

Comments
 (0)