Skip to content

Commit e645469

Browse files
authored
Merge pull request #38 from tddworks/fix/swift-6.2-build
fix(build): compile with Swift 6.2 (CI/release toolchain)
2 parents 6fb5ffb + 8948d70 commit e645469

4 files changed

Lines changed: 18 additions & 8 deletions

File tree

‎Sources/Infrastructure/Apps/AssetLibrary/Images/SDKLibraryImageRepository.swift‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ public struct SDKLibraryImageRepository: LibraryImageRepository, @unchecked Send
1818
category: AssetCategory?
1919
) async throws -> [LibraryImage] {
2020
let sdk = APIEndpoint.v1.appAssetLibraries.id(libraryId).images.get(parameters: .init(
21-
filterCategory: category.flatMap { .init(rawValue: $0.rawValue) }.map { [$0] },
22-
filterState: state.flatMap { .init(rawValue: $0.rawValue) }.map { [$0] },
21+
filterCategory: sdkFilter(category),
22+
filterState: sdkFilter(state),
2323
filterID: imageId.map { [$0] },
2424
limit: 200
2525
))

‎Sources/Infrastructure/Apps/AssetLibrary/Placements/SDKAssetPlacementRepository.swift‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -117,25 +117,25 @@ public struct SDKAssetPlacementRepository: AssetPlacementRepository, @unchecked
117117
switch surface {
118118
case .appStoreVersionLocalization:
119119
let r = APIEndpoint.v1.appStoreVersionLocalizations.id(localizationId).placements.get(parameters: .init(
120-
filterPlacementType: placementType.flatMap { .init(rawValue: $0.rawValue) }.map { [$0] },
120+
filterPlacementType: sdkFilter(placementType),
121121
filterPlacementGroup: groups, sort: [.placementGroupPosition], limit: 200, include: [.image, .video]
122122
))
123123
sdk = (r.path, r.query)
124124
case .experimentTreatmentLocalization:
125125
let r = APIEndpoint.v1.appStoreVersionExperimentTreatmentLocalizations.id(localizationId).placements.get(parameters: .init(
126-
filterPlacementType: placementType.flatMap { .init(rawValue: $0.rawValue) }.map { [$0] },
126+
filterPlacementType: sdkFilter(placementType),
127127
filterPlacementGroup: groups, sort: [.placementGroupPosition], limit: 200, include: [.image, .video]
128128
))
129129
sdk = (r.path, r.query)
130130
case .customProductPageLocalization:
131131
let r = APIEndpoint.v1.appCustomProductPageLocalizations.id(localizationId).placements.get(parameters: .init(
132-
filterPlacementType: placementType.flatMap { .init(rawValue: $0.rawValue) }.map { [$0] },
132+
filterPlacementType: sdkFilter(placementType),
133133
filterPlacementGroup: groups, sort: [.placementGroupPosition], limit: 200, include: [.image, .video]
134134
))
135135
sdk = (r.path, r.query)
136136
case .eventLocalization:
137137
let r = APIEndpoint.v1.appEventLocalizations.id(localizationId).placements.get(parameters: .init(
138-
filterPlacementType: placementType.flatMap { .init(rawValue: $0.rawValue) }.map { [$0] },
138+
filterPlacementType: sdkFilter(placementType),
139139
filterPlacementGroup: groups, sort: [.placementGroupPosition], limit: 200, include: [.image, .video]
140140
))
141141
sdk = (r.path, r.query)

‎Sources/Infrastructure/Apps/AssetLibrary/Videos/SDKLibraryVideoRepository.swift‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ public struct SDKLibraryVideoRepository: LibraryVideoRepository, @unchecked Send
1818
category: AssetCategory?
1919
) async throws -> [LibraryVideo] {
2020
let sdk = APIEndpoint.v1.appAssetLibraries.id(libraryId).videos.get(parameters: .init(
21-
filterCategory: category.flatMap { .init(rawValue: $0.rawValue) }.map { [$0] },
22-
filterState: state.flatMap { .init(rawValue: $0.rawValue) }.map { [$0] },
21+
filterCategory: sdkFilter(category),
22+
filterState: sdkFilter(state),
2323
filterID: videoId.map { [$0] },
2424
limit: 200
2525
))
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/// Turns an optional domain enum into the one-element SDK filter array a query parameter takes,
2+
/// or `nil` when there is no value (or the SDK has no matching case).
3+
///
4+
/// The SDK type comes from the parameter being filled. Spelled as a generic function because
5+
/// Swift 6.2 can't infer `.init(rawValue:)` through `value.flatMap { .init(…) }.map { [$0] }`.
6+
func sdkFilter<SDKValue: RawRepresentable, DomainValue: RawRepresentable>(
7+
_ value: DomainValue?
8+
) -> [SDKValue]? where SDKValue.RawValue == String, DomainValue.RawValue == String {
9+
value.flatMap { SDKValue(rawValue: $0.rawValue) }.map { [$0] }
10+
}

0 commit comments

Comments
 (0)