react-native-firework-sdk 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/android/build.gradle +5 -3
  2. package/android/src/main/java/com/fireworksdk/bridge/components/videofeed/StoryBlockFragment.kt +129 -0
  3. package/android/src/main/java/com/fireworksdk/bridge/components/videofeed/StoryBlockFrameLayout.kt +84 -0
  4. package/android/src/main/java/com/fireworksdk/bridge/models/FWEventName.kt +2 -1
  5. package/android/src/main/java/com/fireworksdk/bridge/models/FWProductInfoViewConfiguration.kt +18 -5
  6. package/android/src/main/java/com/fireworksdk/bridge/models/FWProductInfoViewConfigurationDeserializer.kt +33 -9
  7. package/android/src/main/java/com/fireworksdk/bridge/models/FWShoppingCtaResult.kt +17 -0
  8. package/android/src/main/java/com/fireworksdk/bridge/models/FWShoppingCtaResultDeserializer.kt +33 -0
  9. package/android/src/main/java/com/fireworksdk/bridge/reactnative/manager/FWStoryBlockManager.kt +126 -45
  10. package/android/src/main/java/com/fireworksdk/bridge/reactnative/manager/FWVideoFeedManager.kt +6 -3
  11. package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FWVideoShoppingInterface.kt +2 -2
  12. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWNavigatorModule.kt +9 -1
  13. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWVideoShoppingModule.kt +81 -50
  14. package/android/src/main/java/com/fireworksdk/bridge/reactnative/utils/FWEventUtils.kt +9 -2
  15. package/android/src/main/java/com/fireworksdk/bridge/utils/FWConfigUtil.kt +1 -1
  16. package/android/src/main/java/com/fireworksdk/bridge/utils/FWGlobalDataUtil.kt +4 -0
  17. package/android/src/main/java/com/fireworksdk/bridge/utils/FWLanguageUtil.kt +48 -16
  18. package/android/src/main/res/layout/fw_bridge_story_block.xml +24 -0
  19. package/ios/Components/StoryBlock.swift +33 -2
  20. package/ios/Components/StoryBlockManager.m +32 -0
  21. package/ios/Components/VideoFeed.swift +9 -29
  22. package/ios/Components/VideoFeedManager.m +11 -6
  23. package/ios/FireworkSdk.xcodeproj/project.pbxproj +378 -104
  24. package/ios/Models/NativeToRN/FireworkEventName.swift +3 -1
  25. package/ios/Models/RNToNative/RCTConvert+Shopping.swift +21 -0
  26. package/ios/Models/RNToNative/RCTConvert+VideoFeed.swift +27 -0
  27. package/ios/Modules/FWNavigatorModule/FWNavigatorModule.swift +5 -1
  28. package/ios/Modules/FireworkSDKModule/FireworkSDKModule.m +1 -0
  29. package/ios/Modules/FireworkSDKModule/FireworkSDKModule.swift +30 -0
  30. package/ios/Modules/Shopping/ProductInfoViewConfiguration.swift +13 -0
  31. package/ios/Modules/Shopping/ShoppingCTAResult.swift +16 -0
  32. package/ios/Modules/Shopping/ShoppingModule.m +2 -1
  33. package/ios/Modules/Shopping/ShoppingModule.swift +106 -30
  34. package/ios/Support/MultiHostStreaming/FWMultiHostStreaming.podspec +24 -0
  35. package/ios/Support/MultiHostStreaming/src/MultiHostStreamingSDK.swift +17 -0
  36. package/ios/Utils/AppLanguage/Bundle+FWSwizzle.swift +58 -0
  37. package/ios/Utils/AppLanguage/FWAppLanguageManager.swift +139 -0
  38. package/ios/Utils/AppLanguage/FWLanguageUtil.swift +43 -0
  39. package/ios/Utils/AppLanguage/NumberFormatter+FWSwizzle.swift +25 -0
  40. package/ios/Utils/AppLanguage/UIImageView+FWSwizzle.swift +91 -0
  41. package/ios/Utils/AppLanguage/UILabel+FWSwizzle.swift +98 -0
  42. package/ios/Utils/AppLanguage/UITextField+FWSwizzle.swift +97 -0
  43. package/ios/Utils/AppLanguage/UITextView+FWSwizzle.swift +97 -0
  44. package/ios/Utils/AppLanguage/UIView+FWSwizzle.swift +38 -0
  45. package/ios/Utils/AppLanguage/UIViewController+FWSwizzle.swift +32 -0
  46. package/ios/Utils/AppLanguage/UIWindow+FWSwizzle.swift +26 -0
  47. package/ios/Utils/AppLanguage/URLSession+FWSwizzle.swift +69 -0
  48. package/ios/Utils/{DispatchQueue+FWOnce.swift → Extensions/DispatchQueue+FWOnce.swift} +3 -3
  49. package/ios/Utils/{UINavigationController+FWSwizzle.swift → Extensions/Swizzle/UINavigationController+FWSwizzle.swift} +6 -8
  50. package/ios/Utils/Extensions/UIView+FWUIHierarchy.swift +47 -0
  51. package/ios/Utils/FWRTL/Classes/Manager/FWRTLManager.h +25 -0
  52. package/ios/Utils/FWRTL/Classes/Manager/FWRTLManager.m +75 -0
  53. package/ios/Utils/FWRTL/Classes/UICategories/CALayer+FWRTL.h +21 -0
  54. package/ios/Utils/FWRTL/Classes/UICategories/CALayer+FWRTL.m +124 -0
  55. package/ios/Utils/FWRTL/Classes/UICategories/FWRTLRemoteViewControllerAdaptor.h +11 -0
  56. package/ios/Utils/FWRTL/Classes/UICategories/FWRTLRemoteViewControllerAdaptor.m +86 -0
  57. package/ios/Utils/FWRTL/Classes/UICategories/FWRTLWhiteListManager.h +16 -0
  58. package/ios/Utils/FWRTL/Classes/UICategories/FWRTLWhiteListManager.m +55 -0
  59. package/ios/Utils/FWRTL/Classes/UICategories/UILabel+FWRTL.h +18 -0
  60. package/ios/Utils/FWRTL/Classes/UICategories/UILabel+FWRTL.m +39 -0
  61. package/ios/Utils/FWRTL/Classes/UICategories/UIView+FWRTL.h +54 -0
  62. package/ios/Utils/FWRTL/Classes/UICategories/UIView+FWRTL.m +141 -0
  63. package/ios/Utils/FWRTL/Classes/UICategories/UIWindow+FWRTL.h +16 -0
  64. package/ios/Utils/FWRTL/Classes/UICategories/UIWindow+FWRTL.m +20 -0
  65. package/ios/Utils/FWRTL/Classes/Utils/FWRTLDefinitions.h +52 -0
  66. package/ios/Utils/FWRTL/Classes/Utils/NSObject+FWRTLReloadBlock.h +19 -0
  67. package/ios/Utils/FWRTL/Classes/Utils/NSObject+FWRTLReloadBlock.m +49 -0
  68. package/ios/Utils/FWRTL/Classes/Utils/NSString+FWRTL.h +21 -0
  69. package/ios/Utils/FWRTL/Classes/Utils/NSString+FWRTL.m +38 -0
  70. package/ios/Utils/FWRTL/Classes/Utils/UIImage+FWRTL.h +18 -0
  71. package/ios/Utils/FWRTL/Classes/Utils/UIImage+FWRTL.m +43 -0
  72. package/ios/Utils/FWSwizzleLoader.m +6 -1
  73. package/ios/Utils/FWSwizzleLoader.swift +13 -0
  74. package/ios/Utils/FWSwizzleUtil.swift +17 -9
  75. package/ios/react_native_firework_sdk.h +1 -0
  76. package/ios/scripts/react_native_firework_sdk_pods.rb +31 -0
  77. package/lib/commonjs/FireworkSDK.js +21 -4
  78. package/lib/commonjs/FireworkSDK.js.map +1 -1
  79. package/lib/commonjs/VideoShopping.js +20 -37
  80. package/lib/commonjs/VideoShopping.js.map +1 -1
  81. package/lib/commonjs/components/StoryBlock.js +190 -125
  82. package/lib/commonjs/components/StoryBlock.js.map +1 -1
  83. package/lib/commonjs/components/VideoFeed.js +11 -1
  84. package/lib/commonjs/components/VideoFeed.js.map +1 -1
  85. package/lib/commonjs/index.js.map +1 -1
  86. package/lib/commonjs/models/FWEventName.js +2 -0
  87. package/lib/commonjs/models/FWEventName.js.map +1 -1
  88. package/lib/commonjs/models/ShoppingCTAResult.js +2 -0
  89. package/lib/commonjs/modules/FireworkSDKModule.js.map +1 -1
  90. package/lib/commonjs/modules/ShoppingModule.js.map +1 -1
  91. package/lib/module/FireworkSDK.js +21 -4
  92. package/lib/module/FireworkSDK.js.map +1 -1
  93. package/lib/module/VideoShopping.js +20 -39
  94. package/lib/module/VideoShopping.js.map +1 -1
  95. package/lib/module/components/StoryBlock.js +179 -131
  96. package/lib/module/components/StoryBlock.js.map +1 -1
  97. package/lib/module/components/VideoFeed.js +10 -1
  98. package/lib/module/components/VideoFeed.js.map +1 -1
  99. package/lib/module/index.js.map +1 -1
  100. package/lib/module/models/FWEventName.js +2 -0
  101. package/lib/module/models/FWEventName.js.map +1 -1
  102. package/lib/module/models/ShoppingCTAResult.js +2 -0
  103. package/lib/module/modules/FireworkSDKModule.js.map +1 -1
  104. package/lib/module/modules/ShoppingModule.js.map +1 -1
  105. package/lib/typescript/FireworkSDK.d.ts +7 -4
  106. package/lib/typescript/VideoShopping.d.ts +9 -11
  107. package/lib/typescript/components/StoryBlock.d.ts +19 -25
  108. package/lib/typescript/index.d.ts +6 -6
  109. package/lib/typescript/models/FWEventName.d.ts +2 -0
  110. package/lib/typescript/models/FWEvents.d.ts +14 -1
  111. package/lib/typescript/models/ProductInfoViewConfiguration.d.ts +36 -1
  112. package/lib/typescript/models/ShoppingCTAResult.d.ts +11 -0
  113. package/lib/typescript/modules/FireworkSDKModule.d.ts +1 -2
  114. package/lib/typescript/modules/ShoppingModule.d.ts +2 -1
  115. package/package.json +2 -2
  116. package/react-native-firework-sdk.podspec +26 -24
  117. package/src/FireworkSDK.ts +18 -5
  118. package/src/VideoShopping.ts +40 -53
  119. package/src/components/StoryBlock.tsx +199 -96
  120. package/src/components/VideoFeed.tsx +11 -0
  121. package/src/index.ts +15 -7
  122. package/src/models/FWEventName.ts +2 -0
  123. package/src/models/FWEvents.ts +14 -1
  124. package/src/models/ProductInfoViewConfiguration.ts +38 -1
  125. package/src/models/ShoppingCTAResult.ts +11 -0
  126. package/src/modules/FireworkSDKModule.ts +1 -2
  127. package/src/modules/ShoppingModule.ts +5 -5
  128. package/android/src/main/java/com/fireworksdk/bridge/constants/FWCommandConstant.kt +0 -6
  129. package/ios/Utils/UIView+ParentViewController.swift +0 -21
  130. package/lib/commonjs/models/AddToCartResult.js +0 -2
  131. package/lib/module/models/AddToCartResult.js +0 -2
  132. package/lib/typescript/models/AddToCartResult.d.ts +0 -10
  133. package/src/models/AddToCartResult.ts +0 -10
  134. /package/ios/Utils/{String+Color.swift → Extensions/String+Color.swift} +0 -0
  135. /package/ios/Utils/{UIView+Constraints.swift → Extensions/UIView+Constraints.swift} +0 -0
  136. /package/ios/Utils/{UIViewController+AttachChild.swift → Extensions/UIViewController+AttachChild.swift} +0 -0
  137. /package/lib/commonjs/models/{AddToCartResult.js.map → ShoppingCTAResult.js.map} +0 -0
  138. /package/lib/module/models/{AddToCartResult.js.map → ShoppingCTAResult.js.map} +0 -0
@@ -0,0 +1,141 @@
1
+ //
2
+ // UIView+FWRTL.m
3
+ // FWRTL
4
+ //
5
+ // Created by ByteDance on 2018/9/10.
6
+ //
7
+
8
+ #import "UIView+FWRTL.h"
9
+ #import "CALayer+FWRTL.h"
10
+ #import <objc/runtime.h>
11
+ #import "FWRTLDefinitions.h"
12
+ #import "FWRTLManager.h"
13
+
14
+ @interface UIView ()
15
+
16
+ @property (nonatomic, assign) FWRTLViewType fwrtl_lastType;
17
+ @property (nonatomic, assign) FWRTLViewType fwrtl_calculatedViewType;
18
+
19
+ @end
20
+
21
+ @implementation UIView (FWRTL)
22
+
23
+ #pragma mark - Swizzle
24
+ + (void)load
25
+ {
26
+ FWSwizzle(self, didMoveToSuperview, fwrtl_didMoveToSuperview);
27
+ FWSwizzle(self, didMoveToWindow, fwrtl_didMoveToWindow);
28
+ FWSwizzle(self, snapshotViewAfterScreenUpdates:, fwrtl_snapshotViewAfterScreenUpdates:);
29
+ }
30
+
31
+ - (void)fwrtl_didMoveToSuperview
32
+ {
33
+ [self fwrtl_didMoveToSuperview];
34
+ [self fwrtl_renewLayerTransformForceRecursively:NO];
35
+ }
36
+
37
+ - (void)fwrtl_didMoveToWindow
38
+ {
39
+ [self fwrtl_didMoveToWindow];
40
+ [self fwrtl_renewLayerTransformForceRecursively:NO];
41
+ [[FWRTLManager sharedInstance] registerUIElement:self];
42
+ }
43
+
44
+ - (UIView *)fwrtl_snapshotViewAfterScreenUpdates:(BOOL)afterUpdates
45
+ {
46
+ UIView *res = [self fwrtl_snapshotViewAfterScreenUpdates:afterUpdates];
47
+ res.fwrtl_viewType = self.fwrtl_calculatedViewType;
48
+ return res;
49
+ }
50
+
51
+
52
+ #pragma mark - Additional Properties
53
+ - (void)setFwrtl_viewType:(FWRTLViewType)fwrtl_viewType
54
+ {
55
+ if (self.fwrtl_viewType == fwrtl_viewType) {
56
+ return;
57
+ }
58
+ objc_setAssociatedObject(self, @selector(fwrtl_viewType), @(fwrtl_viewType), OBJC_ASSOCIATION_RETAIN);
59
+ [self fwrtl_renewLayerTransformForceRecursively:NO];
60
+ }
61
+
62
+ - (FWRTLViewType)fwrtl_viewType
63
+ {
64
+ return [objc_getAssociatedObject(self, _cmd) integerValue];
65
+ }
66
+
67
+ - (void)setFwrtl_lastType:(FWRTLViewType)fwrtl_lastType
68
+ {
69
+ objc_setAssociatedObject(self, @selector(fwrtl_lastType), @(fwrtl_lastType), OBJC_ASSOCIATION_RETAIN);
70
+ }
71
+
72
+ - (FWRTLViewType)fwrtl_lastType
73
+ {
74
+ return [objc_getAssociatedObject(self, _cmd) integerValue];
75
+ }
76
+
77
+ - (void)setFwrtl_calculatedViewType:(FWRTLViewType)fwrtl_calculatedViewType
78
+ {
79
+ objc_setAssociatedObject(self, @selector(fwrtl_calculatedViewType), @(fwrtl_calculatedViewType), OBJC_ASSOCIATION_RETAIN);
80
+ }
81
+
82
+ - (FWRTLViewType)fwrtl_calculatedViewType
83
+ {
84
+ FWRTLViewType type = [objc_getAssociatedObject(self, _cmd) integerValue];
85
+ if (type == FWRTLViewTypeAuto) {
86
+ if (self.window) {
87
+ [self fwrtl_updateCalculatedViewType];
88
+ type = [objc_getAssociatedObject(self, _cmd) integerValue];
89
+ } else {
90
+ type = FWRTLViewTypeNormal;
91
+ }
92
+ }
93
+ return type;
94
+ }
95
+
96
+ #pragma mark - RTL
97
+ - (void)fwrtl_renewLayerTransformForceRecursively:(BOOL)forceRecursively
98
+ {
99
+ [self fwrtl_updateCalculatedViewType];
100
+ FWRTLViewType updatedViewType = [self fwrtl_calculatedViewType];
101
+ FWRTLViewType superViewCalculatedViewType = [self.superview fwrtl_calculatedViewType];
102
+ BOOL shouldFlipCurrentView = updatedViewType == FWRTLViewTypeFlip || updatedViewType == FWRTLViewTypeFlipWithAllDescendants;
103
+ BOOL shouldFlipSuperview = superViewCalculatedViewType == FWRTLViewTypeFlip || superViewCalculatedViewType == FWRTLViewTypeFlipWithAllDescendants;
104
+ BOOL shouldSetFlipTransform = shouldFlipSuperview ^ shouldFlipCurrentView;
105
+ if (shouldSetFlipTransform && [FWRTLManager sharedInstance].enableHorizontalFlip) {
106
+ self.layer.fwrtl_basicTransform = CGAffineTransformMakeScale(-1, 1);
107
+ } else {
108
+ self.layer.fwrtl_basicTransform = CGAffineTransformIdentity;
109
+ }
110
+
111
+ if (updatedViewType != self.fwrtl_lastType || forceRecursively) {
112
+ [self.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
113
+ [obj fwrtl_renewLayerTransformForceRecursively:forceRecursively];
114
+ }];
115
+ }
116
+
117
+ self.fwrtl_lastType = updatedViewType;
118
+ }
119
+
120
+ - (void)fwrtl_updateCalculatedViewType
121
+ {
122
+ FWRTLViewType rtlType = [self fwrtl_viewType];
123
+ if (rtlType == FWRTLViewTypeAuto) {
124
+ rtlType = [self fwrtl_automaticViewType];
125
+ }
126
+
127
+ FWRTLViewType superViewCalculatedType = self.superview.fwrtl_calculatedViewType;
128
+ if (superViewCalculatedType == FWRTLViewTypeFlipWithAllDescendants || superViewCalculatedType == FWRTLViewTypeNormalWithAllDescendants || rtlType == FWRTLViewTypeInherit) {
129
+ self.fwrtl_calculatedViewType = self.superview.fwrtl_calculatedViewType;
130
+ } else {
131
+ self.fwrtl_calculatedViewType = rtlType;
132
+ }
133
+ }
134
+
135
+ #pragma mark - For Inherit
136
+ - (FWRTLViewType)fwrtl_automaticViewType
137
+ {
138
+ return self.superview ? FWRTLViewTypeInherit : FWRTLViewTypeNormal;
139
+ }
140
+
141
+ @end
@@ -0,0 +1,16 @@
1
+ //
2
+ // UIWindow+FWRTL.h
3
+ // FWRTL
4
+ //
5
+ // Created by ByteDance on 2018/9/10.
6
+ //
7
+
8
+ #import <UIKit/UIKit.h>
9
+
10
+ NS_ASSUME_NONNULL_BEGIN
11
+
12
+ @interface UIWindow (FWRTL)
13
+
14
+ @end
15
+
16
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,20 @@
1
+ //
2
+ // UIWindow+FWRTL.m
3
+ // FWRTL
4
+ //
5
+ // Created by ByteDance on 2018/9/10.
6
+ //
7
+
8
+ #import "UIWindow+FWRTL.h"
9
+ #import "UIView+FWRTL.h"
10
+ #import "FWRTLDefinitions.h"
11
+ #import "FWRTLManager.h"
12
+
13
+ @implementation UIWindow (FWRTL)
14
+
15
+ - (FWRTLViewType)fwrtl_automaticViewType
16
+ {
17
+ return FWRTLViewTypeNormal;
18
+ }
19
+
20
+ @end
@@ -0,0 +1,52 @@
1
+ //
2
+ // FWRTLDefinitions.h
3
+ // Pods
4
+ //
5
+ // Created by 熊典 on 2018/10/9.
6
+ //
7
+
8
+ #ifndef FWRTLDefinitions_h
9
+ #define FWRTLDefinitions_h
10
+
11
+ #import <objc/runtime.h>
12
+
13
+ #ifndef btd_keywordify
14
+ #if DEBUG
15
+ #define btd_keywordify autoreleasepool {}
16
+ #else
17
+ #define btd_keywordify try {} @catch (...) {}
18
+ #endif
19
+ #endif
20
+
21
+ #ifndef weakify
22
+ #if __has_feature(objc_arc)
23
+ #define weakify(object) btd_keywordify __weak __typeof__(object) weak##_##object = object;
24
+ #else
25
+ #define weakify(object) btd_keywordify __block __typeof__(object) block##_##object = object;
26
+ #endif
27
+ #endif
28
+
29
+ #ifndef strongify
30
+ #if __has_feature(objc_arc)
31
+ #define strongify(object) btd_keywordify __typeof__(object) object = weak##_##object;
32
+ #else
33
+ #define strongify(object) btd_keywordify __typeof__(object) object = block##_##object;
34
+ #endif
35
+ #endif
36
+
37
+ #define FWSwizzle(class, oriMethod, newMethod) {Method originalMethod = class_getInstanceMethod(class, @selector(oriMethod));\
38
+ Method swizzledMethod = class_getInstanceMethod(class, @selector(newMethod));\
39
+ if (class_addMethod(class, @selector(oriMethod), method_getImplementation(swizzledMethod), method_getTypeEncoding(swizzledMethod))) {\
40
+ class_replaceMethod(class, @selector(newMethod), method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod));\
41
+ } else {\
42
+ method_exchangeImplementations(originalMethod, swizzledMethod);\
43
+ }}
44
+
45
+ #define FWSwizzleClass(class, oriMethod, newMethod) {Method originalMethod = class_getClassMethod(class, @selector(oriMethod));\
46
+ Method swizzledMethod = class_getClassMethod(class, @selector(newMethod));\
47
+ method_exchangeImplementations(originalMethod, swizzledMethod);\
48
+ }
49
+
50
+ #define FWBase64Decode(str) [[NSString alloc] initWithData:[[NSData alloc] initWithBase64EncodedString:str options:0] encoding:NSUTF8StringEncoding]
51
+
52
+ #endif /* FWRTLDefinitions_h */
@@ -0,0 +1,19 @@
1
+ //
2
+ // NSObject+FWRTLReloadBlock.h
3
+ // FWRTL
4
+ //
5
+ // Created by 熊典 on 2018/12/6.
6
+ //
7
+
8
+ #import <Foundation/Foundation.h>
9
+
10
+ NS_ASSUME_NONNULL_BEGIN
11
+
12
+ @interface NSObject (FWRTLReloadBlock)
13
+
14
+ - (void)fwrtl_performReload;
15
+ - (void)fwrtl_addReloadBlockForKey:(NSString *)key andExecuteIt:(void (^)(void))reloadBlock;
16
+
17
+ @end
18
+
19
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,49 @@
1
+ //
2
+ // NSObject+FWRTLReloadBlock.m
3
+ // FWRTL
4
+ //
5
+ // Created by 熊典 on 2018/12/6.
6
+ //
7
+
8
+ #import "NSObject+FWRTLReloadBlock.h"
9
+ #import <objc/runtime.h>
10
+
11
+ @interface NSObject ()
12
+
13
+ @property (nonatomic, strong) NSMutableDictionary<NSString *, void (^)(void)> *fwrtl_reloadBlocks;
14
+
15
+ @end
16
+
17
+ @implementation NSObject (FWRTLReloadBlock)
18
+
19
+ - (void)setFwrtl_reloadBlocks:(NSMutableDictionary<NSString *,void (^)(void)> *)fwrtl_reloadBlocks
20
+ {
21
+ objc_setAssociatedObject(self, @selector(fwrtl_reloadBlocks), fwrtl_reloadBlocks, OBJC_ASSOCIATION_RETAIN);
22
+ }
23
+
24
+ - (NSMutableDictionary<NSString *,void (^)(void)> *)fwrtl_reloadBlocks
25
+ {
26
+ return objc_getAssociatedObject(self, _cmd);
27
+ }
28
+
29
+ - (void)fwrtl_addReloadBlockForKey:(NSString *)key andExecuteIt:(void (^)(void))reloadBlock
30
+ {
31
+ if (!self.fwrtl_reloadBlocks) {
32
+ self.fwrtl_reloadBlocks = [NSMutableDictionary dictionary];
33
+ }
34
+ if (reloadBlock) {
35
+ [self.fwrtl_reloadBlocks setObject:reloadBlock forKey:key];
36
+ reloadBlock();
37
+ }
38
+ }
39
+
40
+ - (void)fwrtl_performReload
41
+ {
42
+ if (self.fwrtl_reloadBlocks) {
43
+ [self.fwrtl_reloadBlocks enumerateKeysAndObjectsUsingBlock:^(NSString * _Nonnull key, void (^ _Nonnull obj)(void), BOOL * _Nonnull stop) {
44
+ obj();
45
+ }];
46
+ }
47
+ }
48
+
49
+ @end
@@ -0,0 +1,21 @@
1
+ //
2
+ // NSString+FWRTL.h
3
+ // Pods
4
+ //
5
+ // Created by 唐健 on 2019/5/23.
6
+ //
7
+
8
+
9
+
10
+ NS_ASSUME_NONNULL_BEGIN
11
+
12
+ @interface NSString (FWRTL)
13
+
14
+ - (BOOL)isRTLString;
15
+ - (BOOL)isLTRString;
16
+ - (NSString *)RTLString;
17
+ - (NSString *)LTRString;
18
+
19
+ @end
20
+
21
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,38 @@
1
+ //
2
+ // NSString+FWRTL.m
3
+ // Pods
4
+ //
5
+ // Created by 唐健 on 2019/5/23.
6
+ //
7
+
8
+ #import "NSString+FWRTL.h"
9
+
10
+ @implementation NSString (FWRTL)
11
+
12
+ - (BOOL)isRTLString
13
+ {
14
+ return [self hasPrefix:@"\u202B"];
15
+ }
16
+
17
+ - (BOOL)isLTRString
18
+ {
19
+ return [self hasPrefix:@"\u202A"];
20
+ }
21
+
22
+ - (NSString *)RTLString
23
+ {
24
+ if ([self isRTLString] || [self isLTRString]) {
25
+ return self;
26
+ }
27
+ return [NSString stringWithFormat:@"\u202B%@\u202C", self];
28
+ }
29
+
30
+ - (NSString *)LTRString
31
+ {
32
+ if ([self isRTLString] || [self isLTRString]) {
33
+ return self;
34
+ }
35
+ return [NSString stringWithFormat:@"\u202A%@\u202C", self];
36
+ }
37
+
38
+ @end
@@ -0,0 +1,18 @@
1
+ //
2
+ // UIImage+FWRTL.h
3
+ // FWRTL
4
+ //
5
+ // Created by 熊典 on 2018/12/6.
6
+ //
7
+
8
+ #import <UIKit/UIKit.h>
9
+
10
+ NS_ASSUME_NONNULL_BEGIN
11
+
12
+ @interface UIImage (FWRTL)
13
+
14
+ @property (nonatomic, strong) NSString *fwrtl_imageName;
15
+
16
+ @end
17
+
18
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,43 @@
1
+ //
2
+ // UIImage+FWRTL.m
3
+ // FWRTL
4
+ //
5
+ // Created by 熊典 on 2018/12/6.
6
+ //
7
+
8
+ #import "UIImage+FWRTL.h"
9
+ #import "FWRTLDefinitions.h"
10
+
11
+ @implementation UIImage (FWRTL)
12
+
13
+ + (void)load
14
+ {
15
+ FWSwizzleClass(self, imageNamed:, fwrtl_imageNamed:);
16
+ FWSwizzleClass(self, imageNamed:inBundle:compatibleWithTraitCollection:, fwrtl_imageNamed:inBundle:compatibleWithTraitCollection:);
17
+ }
18
+
19
+ + (UIImage *)fwrtl_imageNamed:(NSString *)name
20
+ {
21
+ UIImage *image = [self fwrtl_imageNamed:name];
22
+ image.fwrtl_imageName = name;
23
+ return image;
24
+ }
25
+
26
+ + (UIImage *)fwrtl_imageNamed:(NSString *)name inBundle:(NSBundle *)bundle compatibleWithTraitCollection:(UITraitCollection *)traitCollection
27
+ {
28
+ UIImage *image = [self fwrtl_imageNamed:name inBundle:bundle compatibleWithTraitCollection:traitCollection];
29
+ image.fwrtl_imageName = name;
30
+ return image;
31
+ }
32
+
33
+ - (NSString *)fwrtl_imageName
34
+ {
35
+ return objc_getAssociatedObject(self, _cmd);
36
+ }
37
+
38
+ - (void)setFwrtl_imageName:(NSString *)fwrtl_imageName
39
+ {
40
+ objc_setAssociatedObject(self, @selector(fwrtl_imageName), fwrtl_imageName, OBJC_ASSOCIATION_RETAIN);
41
+ }
42
+
43
+ @end
@@ -5,12 +5,17 @@
5
5
  //
6
6
 
7
7
  #import "FWSwizzleLoader.h"
8
+
9
+ #if __has_include(<react_native_firework_sdk/react_native_firework_sdk-Swift.h>)
10
+ #import <react_native_firework_sdk/react_native_firework_sdk-Swift.h>
11
+ #else
8
12
  #import "react_native_firework_sdk-Swift.h"
13
+ #endif
9
14
 
10
15
  @implementation FWSwizzleLoader
11
16
 
12
17
  + (void)load {
13
- [UINavigationController fw_swizzleMethods];
18
+ [self swizzelMethods];
14
19
  }
15
20
 
16
21
  @end
@@ -0,0 +1,13 @@
1
+ //
2
+ // FWSwizzleLoader.swift
3
+ //
4
+ // Created by linjie jiang on 2023/2/9.
5
+ //
6
+
7
+ import Foundation
8
+
9
+ extension FWSwizzleLoader {
10
+ @objc public static func swizzelMethods() {
11
+ UINavigationController.swizzleMethodsForNavigationController()
12
+ }
13
+ }
@@ -1,29 +1,37 @@
1
1
  //
2
2
  // FWSwizzleUtil.swift
3
- //
3
+ //
4
4
  // Created by linjie jiang on 2023/2/7.
5
5
  //
6
6
 
7
7
  import Foundation
8
8
 
9
- class FWSwizzleUtil {
10
- static func swizzleSelector(cls: AnyClass, orginalSelector: Selector, customSelector: Selector) {
11
- guard let orginalMethod = class_getInstanceMethod(cls, orginalSelector) else { return }
9
+ public class FWSwizzleUtil {
10
+ public static func swizzleSelector(cls: AnyClass, originalSelector: Selector, customSelector: Selector) {
11
+ guard let originalMethod = class_getInstanceMethod(cls, originalSelector) else { return }
12
12
  guard let customMethod = class_getInstanceMethod(cls, customSelector) else { return }
13
13
 
14
14
  if class_addMethod(
15
15
  cls,
16
- orginalSelector,
16
+ originalSelector,
17
17
  method_getImplementation(customMethod),
18
- method_getTypeEncoding(customMethod)) {
18
+ method_getTypeEncoding(customMethod)
19
+ ) {
19
20
  class_replaceMethod(
20
21
  cls,
21
22
  customSelector,
22
- method_getImplementation(orginalMethod),
23
- method_getTypeEncoding(orginalMethod)
23
+ method_getImplementation(originalMethod),
24
+ method_getTypeEncoding(originalMethod)
24
25
  )
25
26
  } else {
26
- method_exchangeImplementations(orginalMethod, customMethod)
27
+ method_exchangeImplementations(originalMethod, customMethod)
27
28
  }
28
29
  }
30
+
31
+ public static func swizzleClassSelector(cls: AnyClass, originalSelector: Selector, customSelector: Selector) {
32
+ guard let originalMethod = class_getClassMethod(cls, originalSelector) else { return }
33
+ guard let customMethod = class_getClassMethod(cls, customSelector) else { return }
34
+
35
+ method_exchangeImplementations(originalMethod, customMethod)
36
+ }
29
37
  }
@@ -9,5 +9,6 @@
9
9
  #define react_native_firework_sdk_h
10
10
 
11
11
  #import <React/RCTConvert.h>
12
+ #import "FWSwizzleLoader.h"
12
13
 
13
14
  #endif /* react_native_firework_sdk_h */
@@ -0,0 +1,31 @@
1
+ # enable multi host streaming
2
+ def enable_multi_host_streaming
3
+ multi_host_streaming_dir = File.expand_path("#{__dir__}/../Support/MultiHostStreaming")
4
+ # puts "multiHostStreamingDir: #{multi_host_streaming_dir}"
5
+ pod 'FWMultiHostStreaming', path: multi_host_streaming_dir, :modular_headers => true
6
+ end
7
+
8
+ # def force_static_library(pod)
9
+ # static_library_list = ['react-native-firework-sdk']
10
+ # if static_library_list.include?(pod.name)
11
+ # def pod.build_type
12
+ # Pod::BuildType.static_library
13
+ # end
14
+ # end
15
+ # end
16
+
17
+ def force_dynamic_framework(pod)
18
+ dynamic_framework_list = ['SwiftProtobuf']
19
+ if dynamic_framework_list.include?(pod.name)
20
+ def pod.build_type
21
+ Pod::BuildType.dynamic_framework
22
+ end
23
+ end
24
+ end
25
+
26
+ def react_native_firework_sdk_pre_install(installer)
27
+ installer.pod_targets.each do |pod|
28
+ # force_static_library(pod)
29
+ force_dynamic_framework(pod)
30
+ end
31
+ end
@@ -101,6 +101,10 @@ class FireworkSDK {
101
101
  }
102
102
  }
103
103
 
104
+ get appLanguage() {
105
+ return this._appLanguage;
106
+ }
107
+
104
108
  /**
105
109
  * Defaults to false.
106
110
  * You can enable debug logs by setting this property to true.
@@ -172,6 +176,8 @@ class FireworkSDK {
172
176
 
173
177
  _defineProperty(this, "_adBadgeConfiguration", void 0);
174
178
 
179
+ _defineProperty(this, "_appLanguage", void 0);
180
+
175
181
  _defineProperty(this, "_videoLaunchBehavior", void 0);
176
182
 
177
183
  _defineProperty(this, "_shopping", _VideoShopping.default.getInstance());
@@ -265,15 +271,26 @@ class FireworkSDK {
265
271
  }
266
272
  }
267
273
  /**
268
- * Change App level language. Only supported on Android.
269
- * @param {string} language Such as en, ar and en-US
270
- * @returns {Promise<boolean>}
274
+ * Change App level language. Only supported on iOS.
275
+ * @param {string | undefined | null} language Such as en, ar and en-US
276
+ * If language is null or undefined or empty string, SDK will use system language.
277
+ * @returns {Promise<boolean>} The result of changing app language.
271
278
  */
272
279
 
273
280
 
274
281
  async changeAppLanguage(language) {
275
- if (_reactNative.Platform.OS === 'android') {
282
+ if (_reactNative.Platform.OS === 'ios') {
276
283
  const result = await _FireworkSDKModule.default.changeAppLanguage(language);
284
+
285
+ if (result) {
286
+ const valueHasChanged = this._appLanguage !== language;
287
+ this._appLanguage = language;
288
+
289
+ if (valueHasChanged) {
290
+ this.eventEmitter.emit(_FWEventName.FWEventName.AppLanguageUpdated);
291
+ }
292
+ }
293
+
277
294
  return result;
278
295
  }
279
296
 
@@ -1 +1 @@
1
- {"version":3,"sources":["FireworkSDK.ts"],"names":["FireworkSDK","onCustomCTAClick","_onCustomCTAClick","value","FWLoggerUtil","log","FireworkSDKModule","setCustomCTAClickEnabled","onVideoPlayback","_onVideoPlayback","setVideoPlaybackEventEnabled","getShareBaseURL","_shareBaseURL","getAdBadgeConfiguration","_adBadgeConfiguration","setAdBadgeConfiguration","valueHasChanged","badgeTextType","backgroundColor","textColor","eventEmitter","emit","FWEventName","AdBadgeConfigurationUpdated","debugLogsEnabled","enabled","getVideoLaunchBehavior","_videoLaunchBehavior","FireworkSDKModuleEventEmitter","shopping","_shopping","liveStream","_liveStream","navigator","_navigator","getInstance","_instance","constructor","VideoShopping","LiveStream","FWNavigator","addListener","SDKInit","event","error","onSDKInit","LogMessage","logNativeMessage","message","CustomCTAClick","url","VideoPlayback","eventName","VideoFeedClick","info","id","onVideoFeedClick","init","options","then","shareBaseURLChanged","shareBaseURL","ShareBaseURLUpdated","videoLaunchBehaviorUpdated","videoLaunchBehavior","VideoLaunchBehaviorUpdated","ShoppingModule","LiveStreamModule","openVideoPlayer","config","trackPurchase","parameters","Platform","OS","changeAppLanguage","language","result"],"mappings":"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","sourcesContent":["import { NativeEventEmitter, Platform } from 'react-native';\n\nimport FWNavigator from './FWNavigator';\nimport LiveStream from './LiveStream';\nimport type AdBadgeConfiguration from './models/AdBadgeConfiguration';\nimport { FWEventName } from './models/FWEventName';\nimport type {\n CustomCTAClickEvent,\n SDKInitEvent,\n VideoFeedClickEvent,\n VideoPlaybackEvent,\n} from './models/FWEvents';\nimport type SDKInitOptions from './models/SDKInitOptions';\nimport type { VideoLaunchBehavior } from './models/SDKInitOptions';\nimport type TrackPurchaseParameters from './models/TrackPurchaseParameters';\nimport type VideoPlayerConfiguration from './models/VideoPlayerConfiguration';\nimport FireworkSDKModule, {\n FireworkSDKModuleEventEmitter,\n} from './modules/FireworkSDKModule';\nimport LiveStreamModule from './modules/LiveStreamModule';\nimport ShoppingModule from './modules/ShoppingModule';\nimport FWLoggerUtil from './utils/FWLoggerUtil';\nimport VideoShopping from './VideoShopping';\n\nexport type SDKInitCallback = (event: SDKInitEvent) => void;\nexport type CustomCTAClickCallback = (event: CustomCTAClickEvent) => void;\nexport type VideoPlaybackCallback = (event: VideoPlaybackEvent) => void;\nexport type VideoFeedClickCallback = (event: VideoFeedClickEvent) => void;\n\n/**\n * Firework SDK.\n */\nclass FireworkSDK {\n private static _instance?: FireworkSDK;\n\n /**\n * The callback of SDK initialization.\n */\n public onSDKInit?: SDKInitCallback;\n\n /**\n * the callback of clicking Video Feed.\n */\n public onVideoFeedClick?: VideoFeedClickCallback;\n\n /**\n * The callback of clicking custom CTA.\n */\n public get onCustomCTAClick(): CustomCTAClickCallback | undefined {\n return this._onCustomCTAClick;\n }\n public set onCustomCTAClick(value: CustomCTAClickCallback | undefined) {\n FWLoggerUtil.log(`Set onCustomCTAClick callback ${!!value}`);\n this._onCustomCTAClick = value;\n FireworkSDKModule.setCustomCTAClickEnabled(value ? true : false);\n }\n private _onCustomCTAClick: CustomCTAClickCallback | undefined;\n\n /**\n * The callback of video playback. Only supported on iOS.\n */\n public get onVideoPlayback(): VideoPlaybackCallback | undefined {\n return this._onVideoPlayback;\n }\n public set onVideoPlayback(value: VideoPlaybackCallback | undefined) {\n this._onVideoPlayback = value;\n FireworkSDKModule.setVideoPlaybackEventEnabled(value ? true : false);\n }\n private _onVideoPlayback?: VideoPlaybackCallback | undefined;\n\n /**\n * Get share base URL.\n */\n public getShareBaseURL(): string | undefined {\n return this._shareBaseURL;\n }\n private _shareBaseURL: string | undefined;\n\n /**\n * Get the configuration for ad badges. Only supported on iOS.\n */\n public getAdBadgeConfiguration(): AdBadgeConfiguration | undefined {\n return this._adBadgeConfiguration;\n }\n /**\n * Set the configuration for ad badges. Only supported on iOS.\n */\n public async setAdBadgeConfiguration(\n value: AdBadgeConfiguration | undefined\n ): Promise<void> {\n await FireworkSDKModule.setAdBadgeConfiguration(value ?? {});\n const valueHasChanged =\n this._adBadgeConfiguration?.badgeTextType !== value?.badgeTextType ||\n this._adBadgeConfiguration?.backgroundColor !== value?.backgroundColor ||\n this._adBadgeConfiguration?.textColor !== value?.textColor;\n this._adBadgeConfiguration = value;\n if (valueHasChanged) {\n this.eventEmitter.emit(FWEventName.AdBadgeConfigurationUpdated);\n }\n }\n private _adBadgeConfiguration: AdBadgeConfiguration | undefined;\n\n /**\n * Defaults to false.\n * You can enable debug logs by setting this property to true.\n */\n public get debugLogsEnabled(): boolean {\n return FWLoggerUtil.enabled;\n }\n public set debugLogsEnabled(value: boolean) {\n FWLoggerUtil.enabled = value;\n }\n\n /**\n * Get video launch behavior.\n */\n public getVideoLaunchBehavior(): VideoLaunchBehavior | undefined {\n return this._videoLaunchBehavior;\n }\n private _videoLaunchBehavior: VideoLaunchBehavior | undefined;\n\n private get eventEmitter(): NativeEventEmitter {\n return FireworkSDKModuleEventEmitter;\n }\n\n /**\n * Get VideoShopping object.\n */\n public get shopping(): VideoShopping {\n return this._shopping;\n }\n private _shopping: VideoShopping = VideoShopping.getInstance();\n\n /**\n * Get LiveStream object.\n */\n public get liveStream(): LiveStream {\n return this._liveStream;\n }\n private _liveStream: LiveStream = LiveStream.getInstance();\n\n /**\n * Get FWNavigator object.\n */\n public get navigator(): FWNavigator {\n return this._navigator;\n }\n private _navigator: FWNavigator = FWNavigator.getInstance();\n\n /**\n * Get global single instance of FireworkSDK class.\n * @returns FireworkSDK\n */\n public static getInstance() {\n if (!FireworkSDK._instance) {\n FireworkSDK._instance = new FireworkSDK();\n }\n\n return FireworkSDK._instance!;\n }\n\n private constructor() {\n FWLoggerUtil.log('FireworkSDK constructor');\n this.eventEmitter.addListener(FWEventName.SDKInit, (event) => {\n FWLoggerUtil.log(`Receive SDKInit event ${event?.error}`);\n\n if (this.onSDKInit) {\n this.onSDKInit(event ?? {});\n }\n });\n\n this.eventEmitter.addListener(FWEventName.LogMessage, (event) => {\n FWLoggerUtil.logNativeMessage(event.message);\n });\n\n this.eventEmitter.addListener(FWEventName.CustomCTAClick, (event) => {\n FWLoggerUtil.log(`Receive CustomCTAClick url: ${event?.url}`);\n\n if (this.onCustomCTAClick) {\n this.onCustomCTAClick(event ?? {});\n }\n });\n\n this.eventEmitter.addListener(FWEventName.VideoPlayback, (event) => {\n FWLoggerUtil.log(\n `Receive VideoPlayback event eventName: ${event?.eventName}`\n );\n\n if (this.onVideoPlayback) {\n this.onVideoPlayback(event ?? {});\n }\n });\n\n this.eventEmitter.addListener(FWEventName.VideoFeedClick, (event) => {\n FWLoggerUtil.log(`Receive VideoFeedClick event id: ${event?.info.id}`);\n\n if (this.onVideoFeedClick) {\n this.onVideoFeedClick(event ?? {});\n }\n });\n }\n\n /**\n * Initializes Firework SDK.\n * @param {SDKInitOptions?} options\n */\n public async init(options?: SDKInitOptions): Promise<void> {\n FWLoggerUtil.log('Call FireworkSDK init method');\n\n FireworkSDKModule.init(options).then(() => {\n const shareBaseURLChanged = this._shareBaseURL !== options?.shareBaseURL;\n this._shareBaseURL = options?.shareBaseURL;\n if (shareBaseURLChanged) {\n this.eventEmitter.emit(FWEventName.ShareBaseURLUpdated);\n }\n\n const videoLaunchBehaviorUpdated =\n this._videoLaunchBehavior !== options?.videoLaunchBehavior;\n this._videoLaunchBehavior = options?.videoLaunchBehavior;\n if (videoLaunchBehaviorUpdated) {\n this.eventEmitter.emit(FWEventName.VideoLaunchBehaviorUpdated);\n }\n });\n ShoppingModule.init();\n LiveStreamModule.init();\n }\n\n /**\n * Open Video URL.\n * @param {string} url\n * @param {VideoPlayerConfiguration} config\n */\n public openVideoPlayer(url: string, config?: VideoPlayerConfiguration) {\n FireworkSDKModule.openVideoPlayer(url, config ?? {});\n }\n\n /**\n * Records the user purchase. Only supported on iOS.\n * @param {TrackPurchaseParameters} parameters\n */\n public trackPurchase(parameters: TrackPurchaseParameters) {\n if (Platform.OS === 'ios') {\n FireworkSDKModule.trackPurchase(parameters);\n }\n }\n\n /**\n * Change App level language. Only supported on Android.\n * @param {string} language Such as en, ar and en-US\n * @returns {Promise<boolean>}\n */\n public async changeAppLanguage(language: string): Promise<boolean> {\n if (Platform.OS === 'android') {\n const result = await FireworkSDKModule.changeAppLanguage(language);\n return result;\n }\n\n return false;\n }\n}\n\nexport default FireworkSDK;\n"]}
1
+ {"version":3,"sources":["FireworkSDK.ts"],"names":["FireworkSDK","onCustomCTAClick","_onCustomCTAClick","value","FWLoggerUtil","log","FireworkSDKModule","setCustomCTAClickEnabled","onVideoPlayback","_onVideoPlayback","setVideoPlaybackEventEnabled","getShareBaseURL","_shareBaseURL","getAdBadgeConfiguration","_adBadgeConfiguration","setAdBadgeConfiguration","valueHasChanged","badgeTextType","backgroundColor","textColor","eventEmitter","emit","FWEventName","AdBadgeConfigurationUpdated","appLanguage","_appLanguage","debugLogsEnabled","enabled","getVideoLaunchBehavior","_videoLaunchBehavior","FireworkSDKModuleEventEmitter","shopping","_shopping","liveStream","_liveStream","navigator","_navigator","getInstance","_instance","constructor","VideoShopping","LiveStream","FWNavigator","addListener","SDKInit","event","error","onSDKInit","LogMessage","logNativeMessage","message","CustomCTAClick","url","VideoPlayback","eventName","VideoFeedClick","info","id","onVideoFeedClick","init","options","then","shareBaseURLChanged","shareBaseURL","ShareBaseURLUpdated","videoLaunchBehaviorUpdated","videoLaunchBehavior","VideoLaunchBehaviorUpdated","ShoppingModule","LiveStreamModule","openVideoPlayer","config","trackPurchase","parameters","Platform","OS","changeAppLanguage","language","result","AppLanguageUpdated"],"mappings":"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","sourcesContent":["import { NativeEventEmitter, Platform } from 'react-native';\n\nimport FWNavigator from './FWNavigator';\nimport LiveStream from './LiveStream';\nimport type AdBadgeConfiguration from './models/AdBadgeConfiguration';\nimport { FWEventName } from './models/FWEventName';\nimport type {\n CustomCTAClickEvent,\n SDKInitEvent,\n VideoFeedClickEvent,\n VideoPlaybackEvent,\n} from './models/FWEvents';\nimport type SDKInitOptions from './models/SDKInitOptions';\nimport type { VideoLaunchBehavior } from './models/SDKInitOptions';\nimport type TrackPurchaseParameters from './models/TrackPurchaseParameters';\nimport type VideoPlayerConfiguration from './models/VideoPlayerConfiguration';\nimport FireworkSDKModule, {\n FireworkSDKModuleEventEmitter,\n} from './modules/FireworkSDKModule';\nimport LiveStreamModule from './modules/LiveStreamModule';\nimport ShoppingModule from './modules/ShoppingModule';\nimport FWLoggerUtil from './utils/FWLoggerUtil';\nimport VideoShopping from './VideoShopping';\n\nexport type SDKInitCallback = (event: SDKInitEvent) => void;\nexport type CustomCTAClickCallback = (event: CustomCTAClickEvent) => void;\nexport type VideoPlaybackCallback = (event: VideoPlaybackEvent) => void;\nexport type VideoFeedClickCallback = (event: VideoFeedClickEvent) => void;\n\n/**\n * Firework SDK.\n */\nclass FireworkSDK {\n private static _instance?: FireworkSDK;\n\n /**\n * The callback of SDK initialization.\n */\n public onSDKInit?: SDKInitCallback;\n\n /**\n * the callback of clicking Video Feed.\n */\n public onVideoFeedClick?: VideoFeedClickCallback;\n\n /**\n * The callback of clicking custom CTA.\n */\n public get onCustomCTAClick(): CustomCTAClickCallback | undefined {\n return this._onCustomCTAClick;\n }\n public set onCustomCTAClick(value: CustomCTAClickCallback | undefined) {\n FWLoggerUtil.log(`Set onCustomCTAClick callback ${!!value}`);\n this._onCustomCTAClick = value;\n FireworkSDKModule.setCustomCTAClickEnabled(value ? true : false);\n }\n private _onCustomCTAClick: CustomCTAClickCallback | undefined;\n\n /**\n * The callback of video playback. Only supported on iOS.\n */\n public get onVideoPlayback(): VideoPlaybackCallback | undefined {\n return this._onVideoPlayback;\n }\n public set onVideoPlayback(value: VideoPlaybackCallback | undefined) {\n this._onVideoPlayback = value;\n FireworkSDKModule.setVideoPlaybackEventEnabled(value ? true : false);\n }\n private _onVideoPlayback?: VideoPlaybackCallback | undefined;\n\n /**\n * Get share base URL.\n */\n public getShareBaseURL(): string | undefined {\n return this._shareBaseURL;\n }\n private _shareBaseURL: string | undefined;\n\n /**\n * Get the configuration for ad badges. Only supported on iOS.\n */\n public getAdBadgeConfiguration(): AdBadgeConfiguration | undefined {\n return this._adBadgeConfiguration;\n }\n /**\n * Set the configuration for ad badges. Only supported on iOS.\n */\n public async setAdBadgeConfiguration(\n value: AdBadgeConfiguration | undefined\n ): Promise<void> {\n await FireworkSDKModule.setAdBadgeConfiguration(value ?? {});\n const valueHasChanged =\n this._adBadgeConfiguration?.badgeTextType !== value?.badgeTextType ||\n this._adBadgeConfiguration?.backgroundColor !== value?.backgroundColor ||\n this._adBadgeConfiguration?.textColor !== value?.textColor;\n this._adBadgeConfiguration = value;\n if (valueHasChanged) {\n this.eventEmitter.emit(FWEventName.AdBadgeConfigurationUpdated);\n }\n }\n private _adBadgeConfiguration: AdBadgeConfiguration | undefined;\n\n public get appLanguage(): string | undefined | null {\n return this._appLanguage;\n }\n private _appLanguage: string | undefined | null;\n\n /**\n * Defaults to false.\n * You can enable debug logs by setting this property to true.\n */\n public get debugLogsEnabled(): boolean {\n return FWLoggerUtil.enabled;\n }\n public set debugLogsEnabled(value: boolean) {\n FWLoggerUtil.enabled = value;\n }\n\n /**\n * Get video launch behavior.\n */\n public getVideoLaunchBehavior(): VideoLaunchBehavior | undefined {\n return this._videoLaunchBehavior;\n }\n private _videoLaunchBehavior: VideoLaunchBehavior | undefined;\n\n private get eventEmitter(): NativeEventEmitter {\n return FireworkSDKModuleEventEmitter;\n }\n\n /**\n * Get VideoShopping object.\n */\n public get shopping(): VideoShopping {\n return this._shopping;\n }\n private _shopping: VideoShopping = VideoShopping.getInstance();\n\n /**\n * Get LiveStream object.\n */\n public get liveStream(): LiveStream {\n return this._liveStream;\n }\n private _liveStream: LiveStream = LiveStream.getInstance();\n\n /**\n * Get FWNavigator object.\n */\n public get navigator(): FWNavigator {\n return this._navigator;\n }\n private _navigator: FWNavigator = FWNavigator.getInstance();\n\n /**\n * Get global single instance of FireworkSDK class.\n * @returns FireworkSDK\n */\n public static getInstance() {\n if (!FireworkSDK._instance) {\n FireworkSDK._instance = new FireworkSDK();\n }\n\n return FireworkSDK._instance!;\n }\n\n private constructor() {\n FWLoggerUtil.log('FireworkSDK constructor');\n this.eventEmitter.addListener(FWEventName.SDKInit, (event) => {\n FWLoggerUtil.log(`Receive SDKInit event ${event?.error}`);\n\n if (this.onSDKInit) {\n this.onSDKInit(event ?? {});\n }\n });\n\n this.eventEmitter.addListener(FWEventName.LogMessage, (event) => {\n FWLoggerUtil.logNativeMessage(event.message);\n });\n\n this.eventEmitter.addListener(FWEventName.CustomCTAClick, (event) => {\n FWLoggerUtil.log(`Receive CustomCTAClick url: ${event?.url}`);\n\n if (this.onCustomCTAClick) {\n this.onCustomCTAClick(event ?? {});\n }\n });\n\n this.eventEmitter.addListener(FWEventName.VideoPlayback, (event) => {\n FWLoggerUtil.log(\n `Receive VideoPlayback event eventName: ${event?.eventName}`\n );\n\n if (this.onVideoPlayback) {\n this.onVideoPlayback(event ?? {});\n }\n });\n\n this.eventEmitter.addListener(FWEventName.VideoFeedClick, (event) => {\n FWLoggerUtil.log(`Receive VideoFeedClick event id: ${event?.info.id}`);\n\n if (this.onVideoFeedClick) {\n this.onVideoFeedClick(event ?? {});\n }\n });\n }\n\n /**\n * Initializes Firework SDK.\n * @param {SDKInitOptions?} options\n */\n public async init(options?: SDKInitOptions): Promise<void> {\n FWLoggerUtil.log('Call FireworkSDK init method');\n\n FireworkSDKModule.init(options).then(() => {\n const shareBaseURLChanged = this._shareBaseURL !== options?.shareBaseURL;\n this._shareBaseURL = options?.shareBaseURL;\n if (shareBaseURLChanged) {\n this.eventEmitter.emit(FWEventName.ShareBaseURLUpdated);\n }\n\n const videoLaunchBehaviorUpdated =\n this._videoLaunchBehavior !== options?.videoLaunchBehavior;\n this._videoLaunchBehavior = options?.videoLaunchBehavior;\n if (videoLaunchBehaviorUpdated) {\n this.eventEmitter.emit(FWEventName.VideoLaunchBehaviorUpdated);\n }\n });\n ShoppingModule.init();\n LiveStreamModule.init();\n }\n\n /**\n * Open Video URL.\n * @param {string} url\n * @param {VideoPlayerConfiguration} config\n */\n public openVideoPlayer(url: string, config?: VideoPlayerConfiguration) {\n FireworkSDKModule.openVideoPlayer(url, config ?? {});\n }\n\n /**\n * Records the user purchase. Only supported on iOS.\n * @param {TrackPurchaseParameters} parameters\n */\n public trackPurchase(parameters: TrackPurchaseParameters) {\n if (Platform.OS === 'ios') {\n FireworkSDKModule.trackPurchase(parameters);\n }\n }\n\n /**\n * Change App level language. Only supported on iOS.\n * @param {string | undefined | null} language Such as en, ar and en-US\n * If language is null or undefined or empty string, SDK will use system language.\n * @returns {Promise<boolean>} The result of changing app language.\n */\n public async changeAppLanguage(language?: string | null): Promise<boolean> {\n if (Platform.OS === 'ios') {\n const result = await FireworkSDKModule.changeAppLanguage(language);\n if (result) {\n const valueHasChanged = this._appLanguage !== language;\n this._appLanguage = language;\n if (valueHasChanged) {\n this.eventEmitter.emit(FWEventName.AppLanguageUpdated);\n }\n }\n return result;\n }\n\n return false;\n }\n}\n\nexport default FireworkSDK;\n"]}