react-native-moengage-cards 2.1.0 → 3.0.1
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.
- package/ReactNativeMoEngageCards.podspec +7 -1
- package/android/build.gradle +30 -4
- package/android/src/main/java/com/moengage/react/cards/{MoEngageCardsBridge.kt → MoEngageCardsBridgeHandler.kt} +16 -42
- package/android/src/main/java/com/moengage/react/cards/MoEngageCardsPackage.kt +27 -8
- package/android/src/newarch/java/com/moengage/react/cards/MoEngageCardsBridge.kt +97 -0
- package/android/src/oldarch/java/com/moengage/react/cards/MoEngageCardsBridge.kt +126 -0
- package/ios/MoEReactNativeCardsHandler.h +34 -0
- package/ios/MoEReactNativeCardsHandler.m +143 -0
- package/ios/MoEngageCardsBridge.h +11 -1
- package/ios/MoEngageCardsBridge.mm +102 -0
- package/ios/MoEngageCardsReactUtil.h +3 -1
- package/ios/MoEngageCardsReactUtil.m +0 -1
- package/package.json +10 -2
- package/src/NativeMoEngageCards.ts +141 -0
- package/src/internal/MoEngageCardHandler.ts +23 -20
- package/src/internal/utils/PayloadBuilder.ts +25 -15
- package/android/.gradle/8.2/checksums/checksums.lock +0 -0
- package/android/.gradle/8.2/checksums/md5-checksums.bin +0 -0
- package/android/.gradle/8.2/checksums/sha1-checksums.bin +0 -0
- package/android/.gradle/8.2/dependencies-accessors/dependencies-accessors.lock +0 -0
- package/android/.gradle/8.2/dependencies-accessors/gc.properties +0 -0
- package/android/.gradle/8.2/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/8.2/fileChanges/last-build.bin +0 -0
- package/android/.gradle/8.2/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/8.2/gc.properties +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
- package/android/.gradle/vcs-1/gc.properties +0 -0
- package/ios/Cards.xcworkspace/xcuserdata/rakshitha.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/MoEngageCardsBridge.m +0 -149
- 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
|
-
|
|
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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-moengage-cards",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.1",
|
|
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": "^
|
|
33
|
+
"react-native-moengage": "^10.0.1"
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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(
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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(
|
|
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.
|
|
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.
|
|
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.
|
|
223
|
+
getAccountMetaPayload(this.appId)
|
|
221
224
|
);
|
|
222
225
|
const unclickedCount = getUnclickedCountFromPayload(unClickedCardsCountPayload);
|
|
223
226
|
MoEngageLogger.verbose(`${this.TAG} Executed - getUnClickedCardsCount() `, unclickedCount);
|