Skip to content

Commit 5a2c39d

Browse files
committed
[NSDK-365] Implement product types list locally
1 parent 3620c72 commit 5a2c39d

5 files changed

Lines changed: 1614 additions & 2 deletions

File tree

CHANGES.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ Use list notation, and following prefixes:
1313
#### Changes
1414
- Feature: Added Service Environment configurations
1515
- Feature: Hide component when product check returns invalid product state
16+
- Fix: Migrate product types implementation locally
17+
1618

1719
### 2.12.16
1820
- Feature: Add optional configuration for show/hide privacy policy in inpage standard

Virtusize.xcodeproj/project.pbxproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,8 @@
119119
9CFF40FC25B974D200B21D4E /* VirtusizeViewStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CFF40FB25B974D200B21D4E /* VirtusizeViewStyle.swift */; };
120120
9CFF410D25B98D4E00B21D4E /* VirtusizeInPageStandardViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CFF410C25B98D4E00B21D4E /* VirtusizeInPageStandardViewModel.swift */; };
121121
9CFF411325B98FA900B21D4E /* Observable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CFF411225B98FA900B21D4E /* Observable.swift */; };
122+
D7BC74B42EDDD063004616BF /* product_types.json in Resources */ = {isa = PBXBuildFile; fileRef = D7BC74B32EDDD063004616BF /* product_types.json */; };
123+
D7BC74B52EDDD063004616BF /* product_types.json in Resources */ = {isa = PBXBuildFile; fileRef = D7BC74B32EDDD063004616BF /* product_types.json */; };
122124
DF71642A21A28858002C7202 /* VirtusizeEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF71642921A28858002C7202 /* VirtusizeEvent.swift */; };
123125
DF71642C21A28939002C7202 /* VirtusizeEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF71642B21A28939002C7202 /* VirtusizeEnvironment.swift */; };
124126
DF71642E21A28DE8002C7202 /* VirtusizeProduct.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF71642D21A28DE8002C7202 /* VirtusizeProduct.swift */; };
@@ -250,6 +252,7 @@
250252
9CFF40FB25B974D200B21D4E /* VirtusizeViewStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VirtusizeViewStyle.swift; sourceTree = "<group>"; };
251253
9CFF410C25B98D4E00B21D4E /* VirtusizeInPageStandardViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VirtusizeInPageStandardViewModel.swift; sourceTree = "<group>"; };
252254
9CFF411225B98FA900B21D4E /* Observable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Observable.swift; sourceTree = "<group>"; };
255+
D7BC74B32EDDD063004616BF /* product_types.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = product_types.json; sourceTree = "<group>"; };
253256
DF71642421A2818E002C7202 /* ROADMAP.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = ROADMAP.md; sourceTree = "<group>"; };
254257
DF71642921A28858002C7202 /* VirtusizeEvent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VirtusizeEvent.swift; sourceTree = "<group>"; };
255258
DF71642B21A28939002C7202 /* VirtusizeEnvironment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VirtusizeEnvironment.swift; sourceTree = "<group>"; };
@@ -410,6 +413,7 @@
410413
9C35F96625F02AC30004E9CD /* Resources */ = {
411414
isa = PBXGroup;
412415
children = (
416+
D7BC74B32EDDD063004616BF /* product_types.json */,
413417
74F8E3BD2E0D5B7A002CAE98 /* virtusize_loading.gif */,
414418
84CF03B82BD7A64A00C08920 /* PrivacyInfo.xcprivacy */,
415419
9C35F99C25F02CAD0004E9CD /* VirtusizeAssets.xcassets */,
@@ -718,6 +722,7 @@
718722
buildActionMask = 2147483647;
719723
files = (
720724
9C35F9D425F0350B0004E9CD /* README-JP.md in Resources */,
725+
D7BC74B42EDDD063004616BF /* product_types.json in Resources */,
721726
9C35F9D525F0350B0004E9CD /* ROADMAP.md in Resources */,
722727
9CF77B9926CBBF7A0019889E /* Virtusize.podspec in Resources */,
723728
9C35F9D625F0350B0004E9CD /* CHANGES.md in Resources */,
@@ -740,6 +745,7 @@
740745
9C969FDA24EBF71300DD642F /* i18n_ko.json in Resources */,
741746
9C969FD824EBF71200DD642F /* i18n_en.json in Resources */,
742747
9C969FD924EBF71300DD642F /* i18n_jp.json in Resources */,
748+
D7BC74B52EDDD063004616BF /* product_types.json in Resources */,
743749
);
744750
runOnlyForDeploymentPostprocessing = 0;
745751
};

Virtusize/Sources/Internal/API/VirtusizeAPIService.swift

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,25 @@ class VirtusizeAPIService: APIService {
127127
}
128128
return await getAPIResultAsync(request: request, type: [VirtusizeProductType].self)
129129
}
130+
131+
/// Parse product types json file
132+
///
133+
/// - Returns: the product type list where its each element is in the type of `VirtusizeProductType`
134+
internal static func getProductTypesLocalAsync() async -> [VirtusizeProductType] {
135+
let bundle = Bundle(for: Virtusize.self)
136+
if let url = bundle.url(forResource: "product_types", withExtension: "json") {
137+
do {
138+
let data = try Data(contentsOf: url)
139+
let decoder = JSONDecoder()
140+
let products = try decoder.decode([VirtusizeProductType].self, from: data)
141+
return products
142+
} catch {
143+
VirtusizeLogger.debug("Failed to parse JSON: \(error)")
144+
return []
145+
}
146+
}
147+
return []
148+
}
130149

131150
/// The API request for getting the user session data from the Virtusize server
132151
///

0 commit comments

Comments
 (0)