Skip to content

Commit d1a8951

Browse files
committed
Support checking if site has Jetpack SSO enabled
Fix issue building WordPressSite extension Add missing hasSSOEnabled
1 parent 8f37e46 commit d1a8951

File tree

7 files changed

+30
-9
lines changed

7 files changed

+30
-9
lines changed

Networking/Networking/Model/Copiable/Models+Copiable.generated.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3311,7 +3311,8 @@ extension Networking.Site {
33113311
visibility: CopiableProp<SiteVisibility> = .copy,
33123312
canBlaze: CopiableProp<Bool> = .copy,
33133313
isAdmin: CopiableProp<Bool> = .copy,
3314-
wasEcommerceTrial: CopiableProp<Bool> = .copy
3314+
wasEcommerceTrial: CopiableProp<Bool> = .copy,
3315+
hasSSOEnabled: CopiableProp<Bool> = .copy
33153316
) -> Networking.Site {
33163317
let siteID = siteID ?? self.siteID
33173318
let name = name ?? self.name
@@ -3334,6 +3335,7 @@ extension Networking.Site {
33343335
let canBlaze = canBlaze ?? self.canBlaze
33353336
let isAdmin = isAdmin ?? self.isAdmin
33363337
let wasEcommerceTrial = wasEcommerceTrial ?? self.wasEcommerceTrial
3338+
let hasSSOEnabled = hasSSOEnabled ?? self.hasSSOEnabled
33373339

33383340
return Networking.Site(
33393341
siteID: siteID,
@@ -3356,7 +3358,8 @@ extension Networking.Site {
33563358
visibility: visibility,
33573359
canBlaze: canBlaze,
33583360
isAdmin: isAdmin,
3359-
wasEcommerceTrial: wasEcommerceTrial
3361+
wasEcommerceTrial: wasEcommerceTrial,
3362+
hasSSOEnabled: hasSSOEnabled
33603363
)
33613364
}
33623365
}

Networking/Networking/Model/Site.swift

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,10 @@ public struct Site: Decodable, Equatable, Hashable, GeneratedFakeable, Generated
8888
///
8989
public let wasEcommerceTrial: Bool
9090

91+
/// Whether Jetpack SSO is enabled for the site
92+
///
93+
public let hasSSOEnabled: Bool
94+
9195
/// Decodable Conformance.
9296
///
9397
public init(from decoder: Decoder) throws {
@@ -126,6 +130,11 @@ public struct Site: Decodable, Equatable, Hashable, GeneratedFakeable, Generated
126130
return activeFeatures.contains { $0 == Constants.aiAssistantFeature }
127131
}()
128132

133+
let hasSSOEnabled: Bool = {
134+
let jetpackModules = (try? siteContainer.decodeIfPresent([String].self, forKey: SiteKeys.jetpackModules)) ?? []
135+
return jetpackModules.contains(OptionKeys.sso.rawValue) == true
136+
}()
137+
129138
self.init(siteID: siteID,
130139
name: name,
131140
description: description,
@@ -146,7 +155,8 @@ public struct Site: Decodable, Equatable, Hashable, GeneratedFakeable, Generated
146155
visibility: visibility,
147156
canBlaze: canBlaze,
148157
isAdmin: isAdmin,
149-
wasEcommerceTrial: wasEcommerceTrial)
158+
wasEcommerceTrial: wasEcommerceTrial,
159+
hasSSOEnabled: hasSSOEnabled)
150160
}
151161

152162
/// Designated Initializer.
@@ -171,7 +181,8 @@ public struct Site: Decodable, Equatable, Hashable, GeneratedFakeable, Generated
171181
visibility: SiteVisibility,
172182
canBlaze: Bool,
173183
isAdmin: Bool,
174-
wasEcommerceTrial: Bool) {
184+
wasEcommerceTrial: Bool,
185+
hasSSOEnabled: Bool) {
175186
self.siteID = siteID
176187
self.name = name
177188
self.description = description
@@ -193,6 +204,7 @@ public struct Site: Decodable, Equatable, Hashable, GeneratedFakeable, Generated
193204
self.canBlaze = canBlaze
194205
self.isAdmin = isAdmin
195206
self.wasEcommerceTrial = wasEcommerceTrial
207+
self.hasSSOEnabled = hasSSOEnabled
196208
}
197209
}
198210

@@ -239,6 +251,7 @@ private extension Site {
239251
case isJetpackThePluginInstalled = "jetpack"
240252
case isJetpackConnected = "jetpack_connection"
241253
case wasEcommerceTrial = "was_ecommerce_trial"
254+
case jetpackModules = "jetpack_modules"
242255
}
243256

244257
enum PlanInfo: String, CodingKey {
@@ -266,6 +279,8 @@ private extension Site {
266279
case frameNonce = "frame_nonce"
267280
case visibility = "blog_public"
268281
case canBlaze = "can_blaze"
282+
case sso = "sso"
283+
269284
}
270285

271286
enum PlanKeys: String, CodingKey {

Networking/Networking/Model/WordPressSite.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,8 @@ public extension WordPressSite {
108108
visibility: .publicSite,
109109
canBlaze: false,
110110
isAdmin: false,
111-
wasEcommerceTrial: false)
111+
wasEcommerceTrial: false,
112+
hasSSOEnabled: false)
112113
}
113114

114115
struct Authentication: Decodable {

Networking/Networking/Remote/SiteRemote.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ extension SiteRemote {
292292
enum SiteParameter {
293293
enum Fields {
294294
static let key = "fields"
295-
static let value = "ID,name,description,URL,options,jetpack,jetpack_connection,capabilities,was_ecommerce_trial,plan"
295+
static let value = "ID,name,description,URL,options,jetpack,jetpack_connection,capabilities,was_ecommerce_trial,plan,jetpack_modules"
296296
}
297297
enum Options {
298298
static let key = "options"

WooCommerce/WooCommerceUITests/Mocks/mappings/me/rest_v11_me_sites.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"method": "GET",
55
"queryParameters": {
66
"fields": {
7-
"equalTo": "ID,name,description,URL,options,jetpack,jetpack_connection,capabilities,was_ecommerce_trial,plan"
7+
"equalTo": "ID,name,description,URL,options,jetpack,jetpack_connection,capabilities,was_ecommerce_trial,plan,jetpack_modules"
88
},
99
"options": {
1010
"equalTo": "timezone,is_wpcom_store,woocommerce_is_active,gmt_offset,jetpack_connection_active_plugins,admin_url,login_url,frame_nonce,blog_public,can_blaze"

Yosemite/Yosemite/Model/Mocks/Graphs/ScreenshotsObjectGraph.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ struct ScreenshotObjectGraph: MockObjectGraph {
5353
visibility: .publicSite,
5454
canBlaze: false,
5555
isAdmin: false,
56-
wasEcommerceTrial: false
56+
wasEcommerceTrial: false,
57+
hasSSOEnabled: false
5758
)
5859

5960
/// May not be needed anymore if we're not mocking the API

Yosemite/Yosemite/Model/Storage/Site+ReadOnlyConvertible.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ extension Storage.Site: ReadOnlyConvertible {
5555
visibility: SiteVisibility(rawValue: Int(visibility)) ?? .privateSite,
5656
canBlaze: canBlaze,
5757
isAdmin: isAdmin,
58-
wasEcommerceTrial: wasEcommerceTrial)
58+
wasEcommerceTrial: wasEcommerceTrial,
59+
hasSSOEnabled: false) // TODO
5960
}
6061
}

0 commit comments

Comments
 (0)