diff --git a/README.md b/README.md index d074d04..b68d56f 100644 --- a/README.md +++ b/README.md @@ -146,6 +146,8 @@ Future main() async { showSNSButtons: true, // Target the specific environment branch by its name branch: 'branch-name', + // By default, Virtusize shows the Privacy Policy + showShowPrivacyPolicy: true, ); runApp(MyApp()); @@ -165,7 +167,7 @@ Possible argument configuration is shown in the following table: | detailsPanelCards | List<`VSInfoCategory`> | [VSInfoCategory.generalFit, VSInfoCategory.brandSizing] | The info categories which will be display in the Product Details tab. Possible categories are: `VSInfoCategory.modelInfo`, `VSInfoCategory.generalFit`, `VSInfoCategory.brandSizing` and `VSInfoCategory.material` | No. By default, the integration displays all the possible info categories in the Product Details tab. | | showSNSButtons | bool | true | Determines whether the integration will show the SNS buttons to the users. | No. By default, the integration disables the SNS buttons. | | branch | String | 'branch-name' | Targets specific environment branch. | No. By default, production environment is targeted. `staging` targets staging environment. `` targets a specific branch. | - +| setShowPrivacyPolicy | Boolean | setShowPrivacyPolicy(true) | Controls whether the privacy policy shows to users | No. By default, the privacy policy is shown | #### (2) Load Virtusize with the Product Details diff --git a/android/src/main/kotlin/com/virtusize/virtusize_flutter_sdk/VirtusizeFlutterConstants.kt b/android/src/main/kotlin/com/virtusize/virtusize_flutter_sdk/VirtusizeFlutterConstants.kt index 8c032a0..dc01b5b 100644 --- a/android/src/main/kotlin/com/virtusize/virtusize_flutter_sdk/VirtusizeFlutterConstants.kt +++ b/android/src/main/kotlin/com/virtusize/virtusize_flutter_sdk/VirtusizeFlutterConstants.kt @@ -6,6 +6,7 @@ internal object VirtusizeFlutterMethod { const val GET_PRIVACY_POLICY_LINK = "getPrivacyPolicyLink" const val SEND_ORDER = "sendOrder" const val LOAD_VIRTUSIZE = "loadVirtusize" + const val SHOW_PRIVACY_POLICY = "showPrivacyPolicy" // Android to Flutter const val ON_VS_EVENT = "onVSEvent" @@ -39,6 +40,7 @@ internal object VirtusizeFlutterKey { const val REC_TEXT = "recText" const val SHOW_USER_PRODUCT_IMAGE = "showUserProductImage" const val IS_VALID_PRODUCT = "isValidProduct" + const val SHOW_PRIVACY_POLICY = "showPrivacyPolicy" } internal object VirtusizeEventKey { diff --git a/android/src/main/kotlin/com/virtusize/virtusize_flutter_sdk/VirtusizeFlutterPlugin.kt b/android/src/main/kotlin/com/virtusize/virtusize_flutter_sdk/VirtusizeFlutterPlugin.kt index b3a4bf8..bba62b1 100644 --- a/android/src/main/kotlin/com/virtusize/virtusize_flutter_sdk/VirtusizeFlutterPlugin.kt +++ b/android/src/main/kotlin/com/virtusize/virtusize_flutter_sdk/VirtusizeFlutterPlugin.kt @@ -182,6 +182,10 @@ class VirtusizeFlutterPlugin: FlutterPlugin, MethodCallHandler, ActivityAware { virtusizeFlutterBuilder = virtusizeFlutterBuilder.setBranch(branch) } + call.argument(VirtusizeFlutterKey.SHOW_PRIVACY_POLICY)?.let { showPrivacyPolicy -> + virtusizeFlutterBuilder = virtusizeFlutterBuilder.setShowPrivacyPolicy(showPrivacyPolicy) + } + virtusizeFlutter = virtusizeFlutterBuilder .setPresenter(virtusizeFlutterPresenter) .build() diff --git a/example/lib/main.dart b/example/lib/main.dart index 9b1d008..4d53db3 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -26,6 +26,8 @@ Future main() async { showSNSButtons: true, // Target the specific environment branch by its name branch: null, + // By default, Virtusize shows the Privacy Policy + showShowPrivacyPolicy: false, ); runApp(MyApp()); diff --git a/ios/Classes/SwiftVirtusizeFlutterPlugin.swift b/ios/Classes/SwiftVirtusizeFlutterPlugin.swift index 3a65442..1d320db 100644 --- a/ios/Classes/SwiftVirtusizeFlutterPlugin.swift +++ b/ios/Classes/SwiftVirtusizeFlutterPlugin.swift @@ -93,7 +93,11 @@ public class SwiftVirtusizeFlutterPlugin: NSObject, FlutterPlugin { if let branch = arguments[VirtusizeFlutterKey.branch] as? String { virtusizeBuilder = virtusizeBuilder.setBranch(branch) } - + + if let showPrivacyPolicy = arguments[VirtusizeFlutterKey.showPrivacyPolicy] as? Bool { + virtusizeBuilder = virtusizeBuilder.setShowPrivacyPolicy(showPrivacyPolicy) + } + VirtusizeFlutter.params = virtusizeBuilder.build() result([ VirtusizeFlutterKey.virtusizeParams: arguments, diff --git a/ios/Classes/VirtusizeFlutterConstants.swift b/ios/Classes/VirtusizeFlutterConstants.swift index efa457f..de46816 100644 --- a/ios/Classes/VirtusizeFlutterConstants.swift +++ b/ios/Classes/VirtusizeFlutterConstants.swift @@ -39,6 +39,7 @@ struct VirtusizeFlutterKey { static let recText = "recText" static let showUserProductImage = "showUserProductImage" static let isValidProduct = "isValidProduct" + static let showPrivacyPolicy = "showPrivacyPolicy" } struct VirtusizeEventKey { diff --git a/lib/src/main.dart b/lib/src/main.dart index aa57c48..db950e2 100644 --- a/lib/src/main.dart +++ b/lib/src/main.dart @@ -119,6 +119,9 @@ class VirtusizeSDK { /// Target the specific environment branch by its name String? branch, + + // By default, Virtusize shows the Privacy Policy + bool? showShowPrivacyPolicy = true, }) async { try { // [paramsData] is a map with two key-value pairs to return the Virtusize parameters and the display language from Native @@ -139,7 +142,10 @@ class VirtusizeSDK { }).toList(), FlutterVirtusizeKey.showSNSButtons: showSNSButtons, FlutterVirtusizeKey.branch: branch, - }); + FlutterVirtusizeKey.showPrivacyPolicy: showShowPrivacyPolicy, + }); + + IVirtusizeSDK.instance._showPrivacyPolicy = showShowPrivacyPolicy; await _loadVSText( paramsData[FlutterVirtusizeKey.displayLanguage], @@ -275,6 +281,9 @@ class IVirtusizeSDK { late StreamController _productErrorController; Stream get productErrorStream => _productErrorController.stream; + bool? _showPrivacyPolicy = true; + bool? get showPrivacyPolicy => _showPrivacyPolicy; + IVirtusizeSDK._(); /// A function to get the privacy policy link from Native diff --git a/lib/src/utils/virtusize_constants.dart b/lib/src/utils/virtusize_constants.dart index 4168cbb..51a8c7d 100644 --- a/lib/src/utils/virtusize_constants.dart +++ b/lib/src/utils/virtusize_constants.dart @@ -41,4 +41,5 @@ class FlutterVirtusizeKey { static const String recText = "recText"; static const String showUserProductImage = "showUserProductImage"; static const String isValidProduct = "isValidProduct"; + static const String showPrivacyPolicy = "showPrivacyPolicy"; } diff --git a/lib/src/widgets/virtusize_inpage_standard.dart b/lib/src/widgets/virtusize_inpage_standard.dart index 5a13f4d..d4902ad 100644 --- a/lib/src/widgets/virtusize_inpage_standard.dart +++ b/lib/src/widgets/virtusize_inpage_standard.dart @@ -60,11 +60,14 @@ class _VirtusizeInPageStandardState extends State { VirtusizeServerProduct? _userProduct; String? _topRecText; String? _bottomRecText; + late bool _showPrivacyPolicy; @override void initState() { super.initState(); + _showPrivacyPolicy = IVirtusizeSDK.instance.showPrivacyPolicy ?? true; + _vsTextSubscription = IVirtusizeSDK.instance.vsTextStream.listen((vsText) { _vsText = vsText; }); @@ -207,6 +210,7 @@ class _VirtusizeInPageStandardState extends State { fit: BoxFit.cover, ), ), + if(_showPrivacyPolicy) GestureDetector( onTap: _openPrivacyPolicyLink, child: Text(