react-native-moengage-cards 2.1.0 → 3.0.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 (31) hide show
  1. package/ReactNativeMoEngageCards.podspec +2 -1
  2. package/android/build.gradle +30 -4
  3. package/android/src/main/java/com/moengage/react/cards/{MoEngageCardsBridge.kt → MoEngageCardsBridgeHandler.kt} +16 -42
  4. package/android/src/main/java/com/moengage/react/cards/MoEngageCardsPackage.kt +26 -8
  5. package/android/src/newarch/java/com/moengage/react/cards/MoEngageCardsBridge.kt +97 -0
  6. package/android/src/oldarch/java/com/moengage/react/cards/MoEngageCardsBridge.kt +126 -0
  7. package/ios/MoEReactNativeCardsHandler.h +34 -0
  8. package/ios/MoEReactNativeCardsHandler.m +143 -0
  9. package/ios/MoEngageCardsBridge.h +11 -1
  10. package/ios/MoEngageCardsBridge.mm +102 -0
  11. package/ios/MoEngageCardsReactUtil.h +3 -1
  12. package/ios/MoEngageCardsReactUtil.m +0 -1
  13. package/package.json +10 -2
  14. package/src/NativeMoEngageCards.ts +141 -0
  15. package/src/internal/MoEngageCardHandler.ts +23 -20
  16. package/src/internal/utils/PayloadBuilder.ts +25 -15
  17. package/android/.gradle/8.2/checksums/checksums.lock +0 -0
  18. package/android/.gradle/8.2/checksums/md5-checksums.bin +0 -0
  19. package/android/.gradle/8.2/checksums/sha1-checksums.bin +0 -0
  20. package/android/.gradle/8.2/dependencies-accessors/dependencies-accessors.lock +0 -0
  21. package/android/.gradle/8.2/dependencies-accessors/gc.properties +0 -0
  22. package/android/.gradle/8.2/executionHistory/executionHistory.lock +0 -0
  23. package/android/.gradle/8.2/fileChanges/last-build.bin +0 -0
  24. package/android/.gradle/8.2/fileHashes/fileHashes.lock +0 -0
  25. package/android/.gradle/8.2/gc.properties +0 -0
  26. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  27. package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
  28. package/android/.gradle/vcs-1/gc.properties +0 -0
  29. package/ios/Cards.xcworkspace/xcuserdata/rakshitha.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  30. package/ios/MoEngageCardsBridge.m +0 -149
  31. package/src/internal/utils/PlatformPayloadBuilder.ts +0 -81
@@ -0,0 +1,143 @@
1
+ //
2
+ // MoEReactNativeCardsHandler.m
3
+ // ReactNativeMoEngage
4
+ //
5
+ // Created by Rakshitha on 15/03/24.
6
+ //
7
+
8
+ #import <Foundation/Foundation.h>
9
+ #import "MoEReactNativeCardsHandler.h"
10
+ #import "MoEngageReactUtils.h"
11
+ #import "MoEngageCardsReactUtil.h"
12
+ #import "MoEngageReactConstants.h"
13
+
14
+ @import MoEngagePluginCards;
15
+
16
+ @interface MoEReactNativeCardsHandler() <MoEngageCardSyncDelegate>
17
+ @end
18
+
19
+ @implementation MoEReactNativeCardsHandler: NSObject
20
+
21
+ +(instancetype)sharedInstance{
22
+ static dispatch_once_t onceToken;
23
+ static MoEReactNativeCardsHandler *instance;
24
+ dispatch_once(&onceToken, ^{
25
+ instance = [[MoEReactNativeCardsHandler alloc] init];
26
+ });
27
+ return instance;
28
+ }
29
+
30
+ #pragma mark- Initialize methods
31
+ -(void)initialize:(NSString*)payload {
32
+ NSDictionary* jsonPayload = [MoEngageReactUtils getJSONRepresentation:payload];
33
+ [[MoEngagePluginCardsBridge sharedInstance] initialize:jsonPayload];
34
+ [[MoEngagePluginCardsBridge sharedInstance] setAppOpenSyncListener:jsonPayload];
35
+ [[MoEngagePluginCardsBridge sharedInstance] setSyncEventListnerDelegate:self];
36
+ }
37
+
38
+ #pragma mark- Callback methods
39
+ -(void)isAllCategoryEnabled:(NSString *) payload resolve:(RCTPromiseResolveBlock) resolve reject:(RCTPromiseRejectBlock)reject {
40
+ NSDictionary* jsonPayload = [MoEngageReactUtils getJSONRepresentation:payload];
41
+ [[MoEngagePluginCardsBridge sharedInstance] isAllCategoryEnabled:jsonPayload completionHandler:^(NSDictionary<NSString *,id> * _Nonnull cardPayload) {
42
+ [MoEngageCardsReactUtil handleDataToReact:cardPayload rejecter:reject resolver:resolve];
43
+ }];
44
+ }
45
+
46
+ -(void)getCardsCategories:(NSString *) payload resolve:(RCTPromiseResolveBlock) resolve reject:(RCTPromiseRejectBlock)reject {
47
+ NSDictionary* jsonPayload = [MoEngageReactUtils getJSONRepresentation:payload];
48
+ [[MoEngagePluginCardsBridge sharedInstance] getCardsCategories:jsonPayload completionHandler:^(NSDictionary<NSString *,id> * _Nonnull cardPayload) {
49
+ [MoEngageCardsReactUtil handleDataToReact:cardPayload rejecter:reject resolver:resolve];
50
+ }];
51
+ }
52
+
53
+ -(void)getCardsInfo:(NSString *) payload resolve:(RCTPromiseResolveBlock) resolve reject:(RCTPromiseRejectBlock)reject {
54
+ NSDictionary* jsonPayload = [MoEngageReactUtils getJSONRepresentation:payload];
55
+ [[MoEngagePluginCardsBridge sharedInstance] getCardsInfo:jsonPayload completionHandler:^(NSDictionary<NSString *,id> * _Nonnull cardPayload) {
56
+ [MoEngageCardsReactUtil handleDataToReact:cardPayload rejecter:reject resolver:resolve];
57
+ }];
58
+ }
59
+
60
+ -(void)getCardsForCategory:(NSString *) payload resolve:(RCTPromiseResolveBlock) resolve reject:(RCTPromiseRejectBlock)reject {
61
+ NSDictionary* jsonPayload = [MoEngageReactUtils getJSONRepresentation:payload];
62
+ [[MoEngagePluginCardsBridge sharedInstance] getCardsForCategory:jsonPayload completionHandler:^(NSDictionary<NSString *,id> * _Nonnull cardPayload) {
63
+ [MoEngageCardsReactUtil handleDataToReact:cardPayload rejecter:reject resolver:resolve];
64
+ }];
65
+ }
66
+
67
+ -(void)fetchCards:(NSString *) payload resolve:(RCTPromiseResolveBlock) resolve reject:(RCTPromiseRejectBlock)reject {
68
+ NSDictionary* jsonPayload = [MoEngageReactUtils getJSONRepresentation:payload];
69
+ [[MoEngagePluginCardsBridge sharedInstance] fetchCards:jsonPayload completionHandler:^(NSDictionary<NSString *,id> * _Nonnull cardPayload) {
70
+ [MoEngageCardsReactUtil handleDataToReact:cardPayload rejecter:reject resolver:resolve];
71
+ }];
72
+ }
73
+
74
+ -(void)getNewCardsCount:(NSString *) payload resolve:(RCTPromiseResolveBlock) resolve reject:(RCTPromiseRejectBlock)reject {
75
+ NSDictionary* jsonPayload = [MoEngageReactUtils getJSONRepresentation:payload];
76
+ [[MoEngagePluginCardsBridge sharedInstance] getNewCardsCount:jsonPayload completionHandler:^(NSDictionary<NSString *,id> * _Nonnull cardPayload) {
77
+ [MoEngageCardsReactUtil handleDataToReact:cardPayload rejecter:reject resolver:resolve];
78
+ }];
79
+ }
80
+
81
+ -(void)getUnClickedCardsCount:(NSString *) payload resolve:(RCTPromiseResolveBlock) resolve reject:(RCTPromiseRejectBlock)reject {
82
+ NSDictionary* jsonPayload = [MoEngageReactUtils getJSONRepresentation:payload];
83
+ [[MoEngagePluginCardsBridge sharedInstance] getUnClickedCardsCount: jsonPayload completionHandler:^(NSDictionary<NSString *,id> * _Nonnull cardPayload) {
84
+ [MoEngageCardsReactUtil handleDataToReact:cardPayload rejecter:reject resolver:resolve];
85
+ }];
86
+ }
87
+
88
+ #pragma mark- Listener methods
89
+ -(void)refreshCards:(NSString *) payload {
90
+ NSDictionary* jsonPayload = [MoEngageReactUtils getJSONRepresentation:payload];
91
+ [[MoEngagePluginCardsBridge sharedInstance] refreshCards:jsonPayload];
92
+ }
93
+
94
+ -(void)onCardSectionLoaded:(NSString *) payload {
95
+ NSDictionary* jsonPayload = [MoEngageReactUtils getJSONRepresentation:payload];
96
+ [[MoEngagePluginCardsBridge sharedInstance] onCardsSectionLoaded:jsonPayload];
97
+ }
98
+
99
+ -(void)onCardSectionUnLoaded:(NSString *) payload {
100
+ NSDictionary* jsonPayload = [MoEngageReactUtils getJSONRepresentation:payload];
101
+ [[MoEngagePluginCardsBridge sharedInstance] onCardsSectionUnLoaded:jsonPayload];
102
+ }
103
+
104
+ #pragma mark- Stats methods
105
+ -(void)cardClicked:(NSString *) payload {
106
+ NSDictionary* jsonPayload = [MoEngageReactUtils getJSONRepresentation:payload];
107
+ [[MoEngagePluginCardsBridge sharedInstance] cardClicked:jsonPayload];
108
+ }
109
+
110
+ -(void)cardDelivered:(NSString *) payload {
111
+ NSDictionary* jsonPayload = [MoEngageReactUtils getJSONRepresentation:payload];
112
+ [[MoEngagePluginCardsBridge sharedInstance] cardDelivered:jsonPayload];
113
+ }
114
+
115
+ -(void)cardShown:(NSString *) payload {
116
+ NSDictionary* jsonPayload = [MoEngageReactUtils getJSONRepresentation:payload];
117
+ [[MoEngagePluginCardsBridge sharedInstance] cardShown:jsonPayload];
118
+ }
119
+
120
+ -(void)deleteCards:(NSString *) payload {
121
+ NSDictionary* jsonPayload = [MoEngageReactUtils getJSONRepresentation:payload];
122
+ [[MoEngagePluginCardsBridge sharedInstance] deleteCards:jsonPayload];
123
+ }
124
+
125
+ // MARK: Delegate method
126
+ - (void)syncCompleteForEventType:(enum MoEngageCardsSyncEventType)eventType withData:(NSDictionary<NSString *,id> * _Nonnull)data {
127
+ NSMutableDictionary* updatedDict = [NSMutableDictionary dictionary];
128
+ NSString* eventName = [MoEngageCardsReactUtil fetchSyncType:eventType];
129
+
130
+ if (eventName && data) {
131
+ NSError *err;
132
+ NSData * jsonData = [NSJSONSerialization dataWithJSONObject:data options:0 error:&err];
133
+ if (jsonData) {
134
+ NSString* strPayload = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
135
+ updatedDict[kPayload] = strPayload;
136
+ [self.eventEmitter sendEventWithName:eventName body:updatedDict];
137
+ } else {
138
+ NSLog(@"Error converting to dictionary to string %@", err.localizedDescription);
139
+ }
140
+ }
141
+ }
142
+
143
+ @end
@@ -3,7 +3,17 @@
3
3
  #import <React/RCTBridgeModule.h>
4
4
  #import <React/RCTEventEmitter.h>
5
5
 
6
- @import MoEngagePluginCards;
6
+ #ifdef RCT_NEW_ARCH_ENABLED
7
+ #import <NativeMoEngageCardsSpec/NativeMoEngageCardsSpec.h>
8
+ #endif
7
9
 
10
+ @class MoEngageCardsReactUtil;
11
+
12
+ #ifdef RCT_NEW_ARCH_ENABLED
13
+ @interface MoEngageCardsBridge : RCTEventEmitter <NativeMoEngageCardsSpec>
14
+ @end
15
+ #else
8
16
  @interface MoEngageCardsBridge : RCTEventEmitter <RCTBridgeModule>
9
17
  @end
18
+ #endif
19
+
@@ -0,0 +1,102 @@
1
+ // MoEngageCardsBridge.m
2
+
3
+ #import "MoEngageCardsBridge.h"
4
+ #import "MoEngageCardsReactConstants.h"
5
+ #import "MoEReactNativeCardsHandler.h"
6
+
7
+ @implementation MoEngageCardsBridge
8
+
9
+ {
10
+ bool hasListeners;
11
+ }
12
+
13
+ // Will be called when this module's first listener is added.
14
+ -(void)startObserving {
15
+ hasListeners = YES;
16
+ }
17
+
18
+ // Will be called when this module's last listener is removed, or on dealloc.
19
+ -(void)stopObserving {
20
+ hasListeners = NO;
21
+ }
22
+
23
+ - (NSArray<NSString *> *)supportedEvents
24
+ {
25
+ return @[kAppOpenCardsSyncListener, kPullToRefreshCardsSyncListener, kInboxOpenCardsSyncListener];
26
+ }
27
+
28
+ RCT_EXPORT_MODULE();
29
+
30
+ #pragma mark- Initialize methods
31
+
32
+ RCT_EXPORT_METHOD(initialize:(NSString *) payload) {
33
+ [[MoEReactNativeCardsHandler sharedInstance] initialize:payload];
34
+ [MoEReactNativeCardsHandler sharedInstance].eventEmitter = self;
35
+ }
36
+
37
+ #pragma mark- Callback method
38
+ RCT_EXPORT_METHOD(isAllCategoryEnabled:(NSString *) payload resolve:(RCTPromiseResolveBlock) resolve reject:(RCTPromiseRejectBlock)reject) {
39
+ [[MoEReactNativeCardsHandler sharedInstance] isAllCategoryEnabled:payload resolve:resolve reject:reject];
40
+ }
41
+
42
+ RCT_EXPORT_METHOD(getCardsCategories:(NSString *) payload resolve:(RCTPromiseResolveBlock) resolve reject:(RCTPromiseRejectBlock)reject) {
43
+ [[MoEReactNativeCardsHandler sharedInstance] getCardsCategories:payload resolve:resolve reject:reject];
44
+ }
45
+
46
+ RCT_EXPORT_METHOD(getCardsInfo:(NSString *) payload resolve:(RCTPromiseResolveBlock) resolve reject:(RCTPromiseRejectBlock)reject) {
47
+ [[MoEReactNativeCardsHandler sharedInstance] getCardsInfo:payload resolve:resolve reject:reject];
48
+ }
49
+
50
+ RCT_EXPORT_METHOD(getCardsForCategory:(NSString *) payload resolve:(RCTPromiseResolveBlock) resolve reject:(RCTPromiseRejectBlock)reject) {
51
+ [[MoEReactNativeCardsHandler sharedInstance] getCardsForCategory:payload resolve:resolve reject:reject];
52
+ }
53
+
54
+ RCT_EXPORT_METHOD(fetchCards:(NSString *) payload resolve:(RCTPromiseResolveBlock) resolve reject:(RCTPromiseRejectBlock)reject) {
55
+ [[MoEReactNativeCardsHandler sharedInstance] fetchCards:payload resolve:resolve reject:reject];
56
+ }
57
+
58
+ RCT_EXPORT_METHOD(getNewCardsCount:(NSString *) payload resolve:(RCTPromiseResolveBlock) resolve reject:(RCTPromiseRejectBlock)reject) {
59
+ [[MoEReactNativeCardsHandler sharedInstance] getNewCardsCount:payload resolve:resolve reject:reject];
60
+ }
61
+
62
+ RCT_EXPORT_METHOD(getUnClickedCardsCount:(NSString *) payload resolve:(RCTPromiseResolveBlock) resolve reject:(RCTPromiseRejectBlock)reject) {
63
+ [[MoEReactNativeCardsHandler sharedInstance] getUnClickedCardsCount:payload resolve:resolve reject:reject];
64
+ }
65
+
66
+ #pragma mark- Listener methods
67
+ RCT_EXPORT_METHOD(refreshCards:(NSString *) payload) {
68
+ [[MoEReactNativeCardsHandler sharedInstance] refreshCards:payload];
69
+ }
70
+
71
+ RCT_EXPORT_METHOD(onCardSectionLoaded:(NSString *) payload) {
72
+ [[MoEReactNativeCardsHandler sharedInstance] onCardSectionLoaded:payload];
73
+ }
74
+
75
+ RCT_EXPORT_METHOD(onCardSectionUnLoaded:(NSString *) payload) {
76
+ [[MoEReactNativeCardsHandler sharedInstance] onCardSectionUnLoaded:payload];
77
+ }
78
+
79
+ #pragma mark- Stats methods
80
+ RCT_EXPORT_METHOD(cardClicked:(NSString *) payload) {
81
+ [[MoEReactNativeCardsHandler sharedInstance] cardClicked:payload];
82
+ }
83
+
84
+ RCT_EXPORT_METHOD(cardDelivered:(NSString *) payload) {
85
+ [[MoEReactNativeCardsHandler sharedInstance] cardDelivered:payload];
86
+ }
87
+
88
+ RCT_EXPORT_METHOD(cardShown:(NSString *) payload) {
89
+ [[MoEReactNativeCardsHandler sharedInstance] cardShown:payload];
90
+ }
91
+
92
+ RCT_EXPORT_METHOD(deleteCards:(NSString *) payload) {
93
+ [[MoEReactNativeCardsHandler sharedInstance] deleteCards:payload];
94
+ }
95
+
96
+ #ifdef RCT_NEW_ARCH_ENABLED
97
+ - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const facebook::react::ObjCTurboModule::InitParams &)params {
98
+ return std::make_shared<facebook::react::NativeMoEngageCardsSpecJSI>(params);
99
+ }
100
+ #endif
101
+
102
+ @end
@@ -4,8 +4,10 @@
4
4
  //
5
5
  // Created by Rakshitha on 09/08/23.
6
6
  //
7
+
8
+ #import <Foundation/Foundation.h>
7
9
  #import <React/RCTBridgeModule.h>
8
- #import <React/RCTEventEmitter.h>
10
+
9
11
 
10
12
  @import MoEngagePluginCards;
11
13
 
@@ -40,5 +40,4 @@
40
40
  }
41
41
 
42
42
 
43
-
44
43
  @end
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-moengage-cards",
3
- "version": "2.1.0",
3
+ "version": "3.0.0",
4
4
  "description": "Cards Module for the MoEngage Platform",
5
5
  "main": "src/index.ts",
6
6
  "keywords": [
@@ -30,7 +30,7 @@
30
30
  },
31
31
  "license": "SEE LICENSE IN LICENSE.txt",
32
32
  "peerDependencies": {
33
- "react-native-moengage": "^9.0.0"
33
+ "react-native-moengage": "^10.0.0"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@types/jest": "^29.5.0",
@@ -38,5 +38,13 @@
38
38
  "@tsconfig/react-native": "^2.0.2",
39
39
  "ts-jest": "^29.1.0",
40
40
  "typescript": "^4.3.0"
41
+ },
42
+ "codegenConfig": {
43
+ "name": "NativeMoEngageCardsSpec",
44
+ "type": "modules",
45
+ "jsSrcsDir": "src",
46
+ "android": {
47
+ "javaPackageName": "com.moengage.react.cards"
48
+ }
41
49
  }
42
50
  }
@@ -0,0 +1,141 @@
1
+ import type { TurboModule } from 'react-native/Libraries/TurboModule/RCTExport';
2
+ import { TurboModuleRegistry } from 'react-native';
3
+
4
+ export interface Spec extends TurboModule {
5
+ /**
6
+ * Initialize the Card Plugin
7
+ *
8
+ * @param payload Stringified JSON payload.
9
+ */
10
+ initialize: (payload: string) => void;
11
+
12
+ /**
13
+ * Refresh the cards on user request
14
+ *
15
+ * @param payload Stringified JSON payload.
16
+ */
17
+ refreshCards: (payload: string) => void;
18
+
19
+ /**
20
+ * Notify the MoEngage SDK that card section has loaded
21
+ *
22
+ * @param payload Stringified JSON payload.
23
+ *
24
+ */
25
+ onCardSectionLoaded: (payload: string) => void;
26
+
27
+ /**
28
+ * Notify the MoEngage SDK that card section has unloaded
29
+ *
30
+ * @param payload Stringified JSON payload.
31
+ *
32
+ */
33
+ onCardSectionUnLoaded: (payload: string) => void;
34
+
35
+ /**
36
+ * Returns a list of categories to be shown
37
+ *
38
+ * @param payload Stringified JSON payload.
39
+ *
40
+ * @returns {Promise<string>} A promise that contains list of cards categories.
41
+ */
42
+ getCardsCategories(payload: string): Promise<string>;
43
+
44
+ /**
45
+ * Returns a list of eligible cards for the provided category.
46
+ *
47
+ * @param payload Stringified JSON payload.
48
+ *
49
+ * @returns {Promise<string>} A promise that contains cards payload for given category
50
+ */
51
+ getCardsForCategory(payload: string): Promise<string>;
52
+
53
+ /**
54
+ * Fetch all cards
55
+ *
56
+ * @param payload Stringified JSON payload.
57
+ *
58
+ * @returns {Promise<string>} A promise that contains cards payload
59
+ *
60
+ */
61
+ fetchCards(payload: string): Promise<string>;
62
+
63
+ /**
64
+ * Return true if All cards category should be shown
65
+ *
66
+ * @param payload Stringified JSON payload.
67
+ *
68
+ * @returns {Promise<string>} A promise that contains All cards category status.
69
+ */
70
+ isAllCategoryEnabled(payload: string): Promise<string>;
71
+
72
+ /**
73
+ * Fetch count of new cards.
74
+ *
75
+ * @param payload Stringified JSON payload.
76
+ *
77
+ * @returns {Promise<string>} A promise that contains new cards count payload
78
+ */
79
+ getNewCardsCount(payload: string): Promise<string>;
80
+
81
+ /**
82
+ * Fetch count of unclicked cards.
83
+ *
84
+ * @param payload Stringified JSON payload.
85
+ *
86
+ * @returns {Promise<string>} A promise that contains unclicked cards count payload.
87
+ */
88
+ getUnClickedCardsCount(payload: string): Promise<string>;
89
+
90
+ /**
91
+ * Fetches all cards related data
92
+ *
93
+ * @param payload Stringified JSON payload.
94
+ *
95
+ * @returns {Promise<string>} A promise that contains cards related data payload.
96
+ *
97
+ */
98
+ getCardsInfo(payload: string): Promise<string>;
99
+
100
+ /**
101
+ * Marks a card as clicked and tracks an event for statistical purpose
102
+ *
103
+ * @param payload Stringified JSON payload.
104
+ *
105
+ */
106
+ cardClicked: (payload: string) => void;
107
+
108
+ /**
109
+ * Track card delivery to inbox.
110
+ *
111
+ *
112
+ * @param payload Stringified JSON payload.
113
+ * @returns
114
+ */
115
+ cardDelivered: (payload: string) => void;
116
+
117
+ /**
118
+ * Track cards shown and update delivery counters accordingly
119
+ *
120
+ * @param payload Stringified JSON payload.
121
+ *
122
+ * @returns
123
+ */
124
+ cardShown: (payload: string) => void;
125
+
126
+ /**
127
+ * Deletes the multiple cards
128
+ *
129
+ * @param payload Stringified JSON payload.
130
+ *
131
+ * @returns
132
+ */
133
+ deleteCards: (payload: string) => void;
134
+
135
+ // Confirming to Native module interface
136
+ addListener: (eventType: string) => void;
137
+ removeListeners: (count: number) => void;
138
+ }
139
+
140
+ const MoEngageCardsBridge = TurboModuleRegistry.getEnforcing<Spec>('MoEngageCardsBridge');
141
+ export default MoEngageCardsBridge;
@@ -26,9 +26,14 @@ import {
26
26
  } from "./Constants";
27
27
  import { MoEngageLogger } from "react-native-moengage";
28
28
  import { syncDataFromJson } from "./utils/JsonToModelMapper";
29
-
30
-
31
- const MoEngageCardsBridge = require("react-native").NativeModules.MoEngageCardsBridge;
29
+ import MoEngageCardsBridge from '../NativeMoEngageCards';
30
+ import {
31
+ getAccountMetaPayload,
32
+ getCardClickedPayload,
33
+ getCardShownPayload,
34
+ getCardsForCategoriesPayload,
35
+ getDeleteCardsPayload
36
+ } from "./utils/PayloadBuilder";
32
37
 
33
38
  let MoEngageEventEmitter: { addListener: (arg0: any, arg1: (data: any) => void) => void; };
34
39
 
@@ -43,11 +48,9 @@ class MoEngageCardHandler {
43
48
  private TAG = `${MODULE_TAG}MoEngageCardHandler`;
44
49
 
45
50
  private appId: string;
46
- private platformPayloadBuilder: PlatformPayloadBuilder;
47
51
 
48
52
  constructor(appId: string) {
49
53
  this.appId = appId;
50
- this.platformPayloadBuilder = new PlatformPayloadBuilder(Platform.OS, this.appId);
51
54
  }
52
55
 
53
56
  initialize(): void {
@@ -57,7 +60,7 @@ class MoEngageCardHandler {
57
60
  this.addBridgeEventListener();
58
61
  MoEngageLogger.debug(`${this.TAG} Card Bridge Listener Added`);
59
62
  }
60
- MoEngageCardsBridge.initialize(this.platformPayloadBuilder.getAccountMetaPayload());
63
+ MoEngageCardsBridge.initialize(getAccountMetaPayload(this.appId));
61
64
  MoEngageLogger.debug(`${this.TAG} Card Module Initialised with appId: `, this.appId);
62
65
  } catch (error) {
63
66
  MoEngageLogger.error(`${this.TAG} Error while initialising the Cards Plugin: `, error);
@@ -67,7 +70,7 @@ class MoEngageCardHandler {
67
70
  refreshCards(onSyncComplete: (data: SyncCompleteData | null) => void): void {
68
71
  try {
69
72
  MoEngageCardsCache.cacheEventListenerCallback(SyncType.PULL_TO_REFRESH, onSyncComplete);
70
- MoEngageCardsBridge.refreshCards(this.platformPayloadBuilder.getAccountMetaPayload());
73
+ MoEngageCardsBridge.refreshCards(getAccountMetaPayload(this.appId));
71
74
  MoEngageLogger.verbose(`${this.TAG} Executed - refreshCards() `);
72
75
  } catch (error) {
73
76
  MoEngageLogger.error(`${this.TAG} refreshCards() `, error);
@@ -77,7 +80,7 @@ class MoEngageCardHandler {
77
80
  onCardSectionLoaded(onSyncComplete: (data: SyncCompleteData | null) => void): void {
78
81
  try {
79
82
  MoEngageCardsCache.cacheEventListenerCallback(SyncType.INBOX_OPEN, onSyncComplete);
80
- MoEngageCardsBridge.onCardSectionLoaded(this.platformPayloadBuilder.getAccountMetaPayload());
83
+ MoEngageCardsBridge.onCardSectionLoaded(getAccountMetaPayload(this.appId));
81
84
  MoEngageLogger.verbose(`${this.TAG} Executed - onCardSectionLoaded() `);
82
85
  } catch (error) {
83
86
  MoEngageLogger.error(`${this.TAG} onCardSectionLoaded() `, error);
@@ -87,7 +90,7 @@ class MoEngageCardHandler {
87
90
  onCardSectionUnLoaded(): void {
88
91
  try {
89
92
  MoEngageCardsCache.removeCacheForEvent(SyncType.INBOX_OPEN);
90
- MoEngageCardsBridge.onCardSectionUnLoaded(this.platformPayloadBuilder.getAccountMetaPayload());
93
+ MoEngageCardsBridge.onCardSectionUnLoaded(getAccountMetaPayload(this.appId));
91
94
  MoEngageLogger.verbose(`${this.TAG} Executed - onCardSectionUnLoaded() `);
92
95
  } catch (error) {
93
96
  MoEngageLogger.error(`${this.TAG} onCardSectionUnLoaded() `, error);
@@ -97,7 +100,7 @@ class MoEngageCardHandler {
97
100
  async getCardsCategories(): Promise<Array<string>> {
98
101
  try {
99
102
  const categoriesPayload = await MoEngageCardsBridge.getCardsCategories(
100
- this.platformPayloadBuilder.getAccountMetaPayload()
103
+ getAccountMetaPayload(this.appId)
101
104
  );
102
105
  const cardCategories = getCardsCategoriesFromPayload(categoriesPayload);
103
106
  MoEngageLogger.verbose(`${this.TAG} Executed - getCardsCategories() `, cardCategories);
@@ -111,7 +114,7 @@ class MoEngageCardHandler {
111
114
  async getCardsInfo(): Promise<CardInfo> {
112
115
  try {
113
116
  const cardInfoPayload = await MoEngageCardsBridge.getCardsInfo(
114
- this.platformPayloadBuilder.getAccountMetaPayload()
117
+ getAccountMetaPayload(this.appId)
115
118
  );
116
119
  const cardInfo = getCardInfoFromPayload(cardInfoPayload);
117
120
  MoEngageLogger.verbose(`${this.TAG} Executed - getCardsInfo() `, cardInfo);
@@ -124,7 +127,7 @@ class MoEngageCardHandler {
124
127
 
125
128
  cardClicked(card: Card, widgetId: number): void {
126
129
  try {
127
- MoEngageCardsBridge.cardClicked(this.platformPayloadBuilder.getCardClickedPayload(card, widgetId));
130
+ MoEngageCardsBridge.cardClicked(getCardClickedPayload(card, widgetId, this.appId));
128
131
  MoEngageLogger.verbose(`${this.TAG} Executed - cardClicked() for widgetId`, widgetId);
129
132
  } catch (error) {
130
133
  MoEngageLogger.error(`${this.TAG} cardClicked() `, error);
@@ -133,7 +136,7 @@ class MoEngageCardHandler {
133
136
 
134
137
  cardDelivered(): void {
135
138
  try {
136
- MoEngageCardsBridge.cardDelivered(this.platformPayloadBuilder.getAccountMetaPayload());
139
+ MoEngageCardsBridge.cardDelivered(getAccountMetaPayload(this.appId));
137
140
  MoEngageLogger.verbose(`${this.TAG} Executed - cardDelivered() `);
138
141
  } catch (error) {
139
142
  MoEngageLogger.error(`${this.TAG} cardDelivered() `, error);
@@ -142,7 +145,7 @@ class MoEngageCardHandler {
142
145
 
143
146
  cardShown(card: Card) {
144
147
  try {
145
- MoEngageCardsBridge.cardShown(this.platformPayloadBuilder.getCardShowPayload(card));
148
+ MoEngageCardsBridge.cardShown(getCardShownPayload(card, this.appId));
146
149
  MoEngageLogger.verbose(`${this.TAG} Executed - cardShown() `);
147
150
  } catch (error) {
148
151
  MoEngageLogger.error(`${this.TAG} cardShown() `, error);
@@ -152,7 +155,7 @@ class MoEngageCardHandler {
152
155
  async getCardsForCategory(category: string): Promise<CardsData> {
153
156
  try {
154
157
  const cardsDataPayload = await MoEngageCardsBridge.getCardsForCategory(
155
- this.platformPayloadBuilder.getCardsForCategoriesPayload(category)
158
+ getCardsForCategoriesPayload(category, this.appId)
156
159
  );
157
160
  const cardsData = getCardsDataFromPayload(cardsDataPayload);
158
161
  MoEngageLogger.verbose(`${this.TAG} Executed - getCardsForCategory() `, cardsData);
@@ -166,7 +169,7 @@ class MoEngageCardHandler {
166
169
  async fetchCards(): Promise<CardsData> {
167
170
  try {
168
171
  const cardsDataPayload = await MoEngageCardsBridge.fetchCards(
169
- this.platformPayloadBuilder.getAccountMetaPayload()
172
+ getAccountMetaPayload(this.appId)
170
173
  );
171
174
  const cardsData = getCardsDataFromPayloadWithDefaultCategory(cardsDataPayload);
172
175
  MoEngageLogger.verbose(`${this.TAG} Executed - fetchCards() `, cardsData);
@@ -179,7 +182,7 @@ class MoEngageCardHandler {
179
182
 
180
183
  deleteCards(cards: Array<Card>) {
181
184
  try {
182
- MoEngageCardsBridge.deleteCards(this.platformPayloadBuilder.getDeleteCardsPayload(cards));
185
+ MoEngageCardsBridge.deleteCards(getDeleteCardsPayload(cards, this.appId));
183
186
  MoEngageLogger.verbose(`${this.TAG} Executed - deleteCards() `);
184
187
  } catch (error) {
185
188
  MoEngageLogger.error(`${this.TAG} deleteCards() `, error);
@@ -189,7 +192,7 @@ class MoEngageCardHandler {
189
192
  async isAllCategoryEnabled(): Promise<boolean> {
190
193
  try {
191
194
  const categoryStatusPayload = await MoEngageCardsBridge.isAllCategoryEnabled(
192
- this.platformPayloadBuilder.getAccountMetaPayload()
195
+ getAccountMetaPayload(this.appId)
193
196
  );
194
197
  const isAllCategoryEnabled = getAllCategoryStatusFromPayload(categoryStatusPayload);
195
198
  MoEngageLogger.verbose(`${this.TAG} Executed - isAllCategoryEnabled() `, isAllCategoryEnabled);
@@ -203,7 +206,7 @@ class MoEngageCardHandler {
203
206
  async getNewCardsCount(): Promise<number> {
204
207
  try {
205
208
  const newCardsCountPayload = await MoEngageCardsBridge.getNewCardsCount(
206
- this.platformPayloadBuilder.getAccountMetaPayload()
209
+ getAccountMetaPayload(this.appId)
207
210
  );
208
211
  const newCardCount = getNewCardCountFromPayload(newCardsCountPayload);
209
212
  MoEngageLogger.verbose(`${this.TAG} Executed - getNewCardsCount() `, newCardCount);
@@ -217,7 +220,7 @@ class MoEngageCardHandler {
217
220
  async getUnClickedCardsCount(): Promise<number> {
218
221
  try {
219
222
  const unClickedCardsCountPayload = await MoEngageCardsBridge.getUnClickedCardsCount(
220
- this.platformPayloadBuilder.getAccountMetaPayload()
223
+ getAccountMetaPayload(this.appId)
221
224
  );
222
225
  const unclickedCount = getUnclickedCountFromPayload(unClickedCardsCountPayload);
223
226
  MoEngageLogger.verbose(`${this.TAG} Executed - getUnClickedCardsCount() `, unclickedCount);