Skip to content
Merged
5 changes: 4 additions & 1 deletion Modules/Sources/Fakes/Networking.generated.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1774,7 +1774,10 @@ extension Networking.Site {
isAdmin: .fake(),
wasEcommerceTrial: .fake(),
hasSSOEnabled: .fake(),
applicationPasswordAvailable: .fake()
applicationPasswordAvailable: .fake(),
isGarden: false,
gardenName: nil,
gardenPartner: nil
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2747,7 +2747,10 @@ extension Networking.Site {
isAdmin: CopiableProp<Bool> = .copy,
wasEcommerceTrial: CopiableProp<Bool> = .copy,
hasSSOEnabled: CopiableProp<Bool> = .copy,
applicationPasswordAvailable: CopiableProp<Bool> = .copy
applicationPasswordAvailable: CopiableProp<Bool> = .copy,
isGarden: CopiableProp<Bool> = .copy,
gardenName: CopiableProp<String?> = .copy,
gardenPartner: CopiableProp<String?> = .copy
) -> Networking.Site {
let siteID = siteID ?? self.siteID
let name = name ?? self.name
Expand All @@ -2772,6 +2775,9 @@ extension Networking.Site {
let wasEcommerceTrial = wasEcommerceTrial ?? self.wasEcommerceTrial
let hasSSOEnabled = hasSSOEnabled ?? self.hasSSOEnabled
let applicationPasswordAvailable = applicationPasswordAvailable ?? self.applicationPasswordAvailable
let isGarden = isGarden ?? self.isGarden
let gardenName = gardenName ?? self.gardenName
let gardenPartner = gardenPartner ?? self.gardenPartner

return Networking.Site(
siteID: siteID,
Expand All @@ -2796,7 +2802,10 @@ extension Networking.Site {
isAdmin: isAdmin,
wasEcommerceTrial: wasEcommerceTrial,
hasSSOEnabled: hasSSOEnabled,
applicationPasswordAvailable: applicationPasswordAvailable
applicationPasswordAvailable: applicationPasswordAvailable,
isGarden: isGarden,
gardenName: gardenName,
gardenPartner: gardenPartner
)
}
}
Expand Down
32 changes: 30 additions & 2 deletions Modules/Sources/Networking/Model/Site.swift
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,18 @@ public struct Site: Decodable, Equatable, Hashable, GeneratedFakeable, Generated
///
public let applicationPasswordAvailable: Bool

/// Whether the site is running on Garden architecture
///
public let isGarden: Bool

/// The site Garden name is present
///
public let gardenName: String?

/// The site Garden partner if present
///
public let gardenPartner: String?

/// Decodable Conformance.
///
public init(from decoder: Decoder) throws {
Expand Down Expand Up @@ -140,6 +152,10 @@ public struct Site: Decodable, Equatable, Hashable, GeneratedFakeable, Generated
return jetpackModules.contains(OptionKeys.sso.rawValue) == true
}()

let isGarden = try siteContainer.decodeIfPresent(Bool.self, forKey: .isGarden) ?? false
let gardenName = try siteContainer.decodeIfPresent(String.self, forKey: .gardenName)
let gardenPartner = try siteContainer.decodeIfPresent(String.self, forKey: .gardenPartner)

self.init(siteID: siteID,
name: name,
description: description,
Expand All @@ -162,7 +178,10 @@ public struct Site: Decodable, Equatable, Hashable, GeneratedFakeable, Generated
isAdmin: isAdmin,
wasEcommerceTrial: wasEcommerceTrial,
hasSSOEnabled: hasSSOEnabled,
applicationPasswordAvailable: false) // to be updated by fetching SiteAPI
applicationPasswordAvailable: false, // to be updated by fetching SiteAPI
isGarden: isGarden,
gardenName: gardenName,
gardenPartner: gardenPartner)
}

/// Designated Initializer.
Expand All @@ -189,7 +208,10 @@ public struct Site: Decodable, Equatable, Hashable, GeneratedFakeable, Generated
isAdmin: Bool,
wasEcommerceTrial: Bool,
hasSSOEnabled: Bool,
applicationPasswordAvailable: Bool) {
applicationPasswordAvailable: Bool,
isGarden: Bool,
gardenName: String?,
gardenPartner: String?) {
self.siteID = siteID
self.name = name
self.description = description
Expand All @@ -213,6 +235,9 @@ public struct Site: Decodable, Equatable, Hashable, GeneratedFakeable, Generated
self.wasEcommerceTrial = wasEcommerceTrial
self.hasSSOEnabled = hasSSOEnabled
self.applicationPasswordAvailable = applicationPasswordAvailable
self.isGarden = isGarden
self.gardenName = gardenName
self.gardenPartner = gardenPartner
}
}

Expand Down Expand Up @@ -264,6 +289,9 @@ private extension Site {
case isJetpackConnected = "jetpack_connection"
case wasEcommerceTrial = "was_ecommerce_trial"
case jetpackModules = "jetpack_modules"
case isGarden = "is_garden"
case gardenName = "garden_name"
case gardenPartner = "garden_partner"
}

enum PlanInfo: String, CodingKey {
Expand Down
5 changes: 4 additions & 1 deletion Modules/Sources/Networking/Model/WordPressSite.swift
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,10 @@ public extension WordPressSite {
isAdmin: false,
wasEcommerceTrial: false,
hasSSOEnabled: false,
applicationPasswordAvailable: false)
applicationPasswordAvailable: false,
isGarden: false,
gardenName: nil,
gardenPartner: nil)
}

struct Authentication: Decodable {
Expand Down
31 changes: 28 additions & 3 deletions Modules/Sources/Networking/Remote/SiteRemote.swift
Original file line number Diff line number Diff line change
Expand Up @@ -338,12 +338,37 @@ extension SiteRemote {
enum SiteParameter {
enum Fields {
static let key = "fields"
static let value = "ID,name,description,URL,options,jetpack,jetpack_connection,capabilities,was_ecommerce_trial,plan,jetpack_modules"
static let value = [
"ID",
"name",
"description",
"URL",
"options",
"jetpack",
"jetpack_connection",
"capabilities",
"was_ecommerce_trial",
"plan",
"jetpack_modules",
"is_garden",
"garden_name",
"garden_partner"
].joined(separator: ",")
}
enum Options {
static let key = "options"
static let value =
"timezone,is_wpcom_store,woocommerce_is_active,gmt_offset,jetpack_connection_active_plugins,admin_url,login_url,frame_nonce,blog_public,can_blaze"
static let value = [
"timezone",
"is_wpcom_store",
"woocommerce_is_active",
"gmt_offset",
"jetpack_connection_active_plugins",
"admin_url",
"login_url",
"frame_nonce",
"blog_public",
"can_blaze"
].joined(separator: ",")
}
}
}
Expand Down
6 changes: 6 additions & 0 deletions Modules/Sources/Storage/Model/MIGRATIONS.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@

This file documents changes in the WCiOS Storage data model. Please explain any changes to the data model as well as any custom migrations.

## Model 126 (Release 23.3.0.0)
- @rafaelkayumov 2025-09-15
- Added `isGarden` attribute to `Site` entity.
- Added `gardenName` attribute to `Site` entity.
- Added `gardenPartner` attribute to `Site` entity.

## Model 125 (Release 23.2.0.0)
- @itsmeichigo 2025-09-04
- Added `hazmatCategory` attribute to `ShippingLabel` entity.
Expand Down
3 changes: 3 additions & 0 deletions Modules/Sources/Storage/Model/Site+CoreDataProperties.swift
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ extension Site {
@NSManaged public var canBlaze: Bool
@NSManaged public var wasEcommerceTrial: Bool
@NSManaged public var hasSSOEnabled: Bool
@NSManaged public var isGarden: Bool
@NSManaged public var gardenName: String?
@NSManaged public var gardenPartner: String?

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@
<plist version="1.0">
<dict>
<key>_XCCurrentVersionName</key>
<string>Model 125.xcdatamodel</string>
<string>Model 126.xcdatamodel</string>
</dict>
</plist>
Loading