@@ -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,7 @@ private extension Site {
266279 case frameNonce = " frame_nonce "
267280 case visibility = " blog_public "
268281 case canBlaze = " can_blaze "
282+ case sso = " sso "
269283 }
270284
271285 enum PlanKeys : String , CodingKey {
0 commit comments