react-native-moengage-cards 1.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.
- package/README.md +10 -0
- package/ReactNativeMoEngageCards.podspec +25 -0
- package/android/.editorconfig +8 -0
- package/android/build.gradle +58 -0
- package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +18 -0
- package/android/gradle.properties +14 -0
- package/android/gradlew +234 -0
- package/android/gradlew.bat +89 -0
- package/android/src/main/AndroidManifest.xml +16 -0
- package/android/src/main/java/com/moengage/react/cards/Constants.kt +12 -0
- package/android/src/main/java/com/moengage/react/cards/EventEmitterImpl.kt +62 -0
- package/android/src/main/java/com/moengage/react/cards/MoEngageCardsBridge.kt +228 -0
- package/android/src/main/java/com/moengage/react/cards/MoEngageCardsPackage.kt +35 -0
- package/android/src/main/java/com/moengage/react/cards/PayloadGenerator.kt +26 -0
- package/ios/Cards.xcodeproj/project.pbxproj +302 -0
- package/ios/Cards.xcworkspace/contents.xcworkspacedata +7 -0
- package/ios/Cards.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/ios/MoEngageCardsBridge.h +9 -0
- package/ios/MoEngageCardsBridge.m +149 -0
- package/ios/MoEngageCardsReactConstants.h +14 -0
- package/ios/MoEngageCardsReactConstants.m +15 -0
- package/ios/MoEngageCardsReactUtil.h +15 -0
- package/ios/MoEngageCardsReactUtil.m +44 -0
- package/package.json +42 -0
- package/src/ReactMoEngageCards.ts +212 -0
- package/src/index.ts +58 -0
- package/src/internal/Constants.ts +86 -0
- package/src/internal/MoEngageCardHandler.ts +265 -0
- package/src/internal/MoEngageCardsCache.ts +31 -0
- package/src/internal/utils/JsonToModelMapper.ts +267 -0
- package/src/internal/utils/ModelToJsonMapper.ts +250 -0
- package/src/internal/utils/PayloadBuilder.ts +68 -0
- package/src/internal/utils/PayloadParser.ts +53 -0
- package/src/internal/utils/PlatformPayloadBuilder.ts +81 -0
- package/src/internal/utils/Util.ts +16 -0
- package/src/model/CampaignState.ts +54 -0
- package/src/model/Card.ts +51 -0
- package/src/model/CardInfo.ts +36 -0
- package/src/model/CardsData.ts +29 -0
- package/src/model/Container.ts +59 -0
- package/src/model/DisplayControl.ts +70 -0
- package/src/model/MetaData.ts +90 -0
- package/src/model/ShowTime.ts +27 -0
- package/src/model/SyncData.ts +30 -0
- package/src/model/Template.ts +37 -0
- package/src/model/Widget.ts +59 -0
- package/src/model/action/Action.ts +22 -0
- package/src/model/action/NavigationAction.ts +39 -0
- package/src/model/enums/ActionType.ts +16 -0
- package/src/model/enums/NavigationType.ts +28 -0
- package/src/model/enums/SyncType.ts +28 -0
- package/src/model/enums/TemplateType.ts +22 -0
- package/src/model/enums/WidgetType.ts +28 -0
- package/src/model/styles/ButtonStyle.ts +23 -0
- package/src/model/styles/ContainerStyle.ts +20 -0
- package/src/model/styles/ImageStyle.ts +16 -0
- package/src/model/styles/TextStyle.ts +19 -0
- package/src/model/styles/WidgetStyle.ts +19 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
// MoEngageCardsBridge.m
|
|
2
|
+
|
|
3
|
+
#import "MoEngageCardsBridge.h"
|
|
4
|
+
#import "MoEngageCardsReactConstants.h"
|
|
5
|
+
#import "MoEngageCardsReactUtil.h"
|
|
6
|
+
|
|
7
|
+
@interface MoEngageCardsBridge() <MoEngageCardSyncDelegate>
|
|
8
|
+
@end
|
|
9
|
+
|
|
10
|
+
@implementation MoEngageCardsBridge
|
|
11
|
+
{
|
|
12
|
+
bool hasListeners;
|
|
13
|
+
}
|
|
14
|
+
// Will be called when this module's first listener is added.
|
|
15
|
+
-(void)startObserving {
|
|
16
|
+
hasListeners = YES;
|
|
17
|
+
// Set up any upstream listeners or background tasks as necessary
|
|
18
|
+
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// Will be called when this module's last listener is removed, or on dealloc.
|
|
22
|
+
-(void)stopObserving {
|
|
23
|
+
hasListeners = NO;
|
|
24
|
+
// Remove upstream listeners, stop unnecessary background tasks
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
- (NSArray<NSString *> *)supportedEvents
|
|
28
|
+
{
|
|
29
|
+
return @[kAppOpenCardsSyncListener, kPullToRefreshCardsSyncListener, kInboxOpenCardsSyncListener];
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
RCT_EXPORT_MODULE();
|
|
34
|
+
|
|
35
|
+
RCT_EXPORT_METHOD(initialize:(NSDictionary *) payload)
|
|
36
|
+
{
|
|
37
|
+
[[MoEngagePluginCardsBridge sharedInstance] initialize:payload];
|
|
38
|
+
[[MoEngagePluginCardsBridge sharedInstance] setAppOpenSyncListener:payload];
|
|
39
|
+
[[MoEngagePluginCardsBridge sharedInstance] setSyncEventListnerDelegate:self];
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
RCT_EXPORT_METHOD(isAllCategoryEnabled:(NSDictionary *) payload resolver:(RCTPromiseResolveBlock) resolver rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
43
|
+
{
|
|
44
|
+
[[MoEngagePluginCardsBridge sharedInstance] isAllCategoryEnabled:payload completionHandler:^(NSDictionary<NSString *,id> * _Nonnull cardPayload) {
|
|
45
|
+
[MoEngageCardsReactUtil handleDataToReact:cardPayload rejecter:rejecter resolver:resolver];
|
|
46
|
+
}];
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
RCT_EXPORT_METHOD(getCardsCategories:(NSDictionary *) payload resolver:(RCTPromiseResolveBlock) resolver rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
51
|
+
{
|
|
52
|
+
[[MoEngagePluginCardsBridge sharedInstance] getCardsCategories:payload completionHandler:^(NSDictionary<NSString *,id> * _Nonnull cardPayload) {
|
|
53
|
+
[MoEngageCardsReactUtil handleDataToReact:cardPayload rejecter:rejecter resolver:resolver];
|
|
54
|
+
}];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
RCT_EXPORT_METHOD(getCardsInfo:(NSDictionary *) payload resolver:(RCTPromiseResolveBlock) resolver rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
59
|
+
{
|
|
60
|
+
[[MoEngagePluginCardsBridge sharedInstance] getCardsInfo:payload completionHandler:^(NSDictionary<NSString *,id> * _Nonnull cardPayload) {
|
|
61
|
+
[MoEngageCardsReactUtil handleDataToReact:cardPayload rejecter:rejecter resolver:resolver];
|
|
62
|
+
}];
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
RCT_EXPORT_METHOD(getCardsForCategory:(NSDictionary *) payload resolver:(RCTPromiseResolveBlock) resolver rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
66
|
+
{
|
|
67
|
+
[[MoEngagePluginCardsBridge sharedInstance] getCardsForCategory:payload completionHandler:^(NSDictionary<NSString *,id> * _Nonnull cardPayload) {
|
|
68
|
+
[MoEngageCardsReactUtil handleDataToReact:cardPayload rejecter:rejecter resolver:resolver];
|
|
69
|
+
}];
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
RCT_EXPORT_METHOD(fetchCards:(NSDictionary *) payload resolver:(RCTPromiseResolveBlock) resolver rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
73
|
+
{
|
|
74
|
+
[[MoEngagePluginCardsBridge sharedInstance] fetchCards:payload completionHandler:^(NSDictionary<NSString *,id> * _Nonnull cardPayload) {
|
|
75
|
+
[MoEngageCardsReactUtil handleDataToReact:cardPayload rejecter:rejecter resolver:resolver];
|
|
76
|
+
}];
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
RCT_EXPORT_METHOD(getNewCardsCount:(NSDictionary *) payload resolver:(RCTPromiseResolveBlock) resolver rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
81
|
+
{
|
|
82
|
+
[[MoEngagePluginCardsBridge sharedInstance] getNewCardsCount:payload completionHandler:^(NSDictionary<NSString *,id> * _Nonnull cardPayload) {
|
|
83
|
+
[MoEngageCardsReactUtil handleDataToReact:cardPayload rejecter:rejecter resolver:resolver];
|
|
84
|
+
}];
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
RCT_EXPORT_METHOD(getUnClickedCardsCount:(NSDictionary *) payload resolver:(RCTPromiseResolveBlock) resolver rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
89
|
+
{
|
|
90
|
+
[[MoEngagePluginCardsBridge sharedInstance] getUnClickedCardsCount:payload completionHandler:^(NSDictionary<NSString *,id> * _Nonnull cardPayload) {
|
|
91
|
+
[MoEngageCardsReactUtil handleDataToReact:cardPayload rejecter:rejecter resolver:resolver];
|
|
92
|
+
}];
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
RCT_EXPORT_METHOD(refreshCards:(NSDictionary *) payload)
|
|
96
|
+
{
|
|
97
|
+
[[MoEngagePluginCardsBridge sharedInstance] refreshCards:payload];
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
RCT_EXPORT_METHOD(onCardSectionLoaded:(NSDictionary *) payload)
|
|
102
|
+
{
|
|
103
|
+
[[MoEngagePluginCardsBridge sharedInstance] onCardsSectionLoaded:payload];
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
RCT_EXPORT_METHOD(onCardSectionUnLoaded:(NSDictionary *) payload)
|
|
107
|
+
{
|
|
108
|
+
[[MoEngagePluginCardsBridge sharedInstance] onCardsSectionUnLoaded:payload];
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
RCT_EXPORT_METHOD(cardClicked:(NSDictionary *) payload)
|
|
112
|
+
{
|
|
113
|
+
[[MoEngagePluginCardsBridge sharedInstance] cardClicked:payload];
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
RCT_EXPORT_METHOD(cardDelivered:(NSDictionary *) payload)
|
|
117
|
+
{
|
|
118
|
+
[[MoEngagePluginCardsBridge sharedInstance] cardDelivered:payload];
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
RCT_EXPORT_METHOD(cardShown:(NSDictionary *) payload)
|
|
122
|
+
{
|
|
123
|
+
[[MoEngagePluginCardsBridge sharedInstance] cardShown:payload];
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
RCT_EXPORT_METHOD(deleteCards:(NSDictionary *) payload)
|
|
127
|
+
{
|
|
128
|
+
[[MoEngagePluginCardsBridge sharedInstance] deleteCards:payload];
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
- (void)syncCompleteForEventType:(enum MoEngageCardsSyncEventType)eventType withData:(NSDictionary<NSString *,id> *)data {
|
|
132
|
+
|
|
133
|
+
NSMutableDictionary* updatedDict = [NSMutableDictionary dictionary];
|
|
134
|
+
NSString* eventName = [MoEngageCardsReactUtil fetchSyncType:eventType];
|
|
135
|
+
|
|
136
|
+
if (hasListeners && eventName && data) {
|
|
137
|
+
NSError *err;
|
|
138
|
+
NSData * jsonData = [NSJSONSerialization dataWithJSONObject:data options:0 error:&err];
|
|
139
|
+
if (jsonData) {
|
|
140
|
+
NSString* strPayload = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
|
|
141
|
+
updatedDict[kPayload] = strPayload;
|
|
142
|
+
[self sendEventWithName:eventName body:updatedDict];
|
|
143
|
+
} else {
|
|
144
|
+
NSLog(@"Error converting to dictionary to string %@", err.localizedDescription);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
@end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//
|
|
2
|
+
// MoEngageCardsReactConstants.h
|
|
3
|
+
// Pods
|
|
4
|
+
//
|
|
5
|
+
// Created by Rakshitha on 09/08/23.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
#import <Foundation/Foundation.h>
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
extern NSString* const kPayload;
|
|
12
|
+
extern NSString* const kAppOpenCardsSyncListener;
|
|
13
|
+
extern NSString* const kPullToRefreshCardsSyncListener;
|
|
14
|
+
extern NSString* const kInboxOpenCardsSyncListener;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//
|
|
2
|
+
// MoEngageCardsReactConstants.m
|
|
3
|
+
// ReactNativeMoEngageCards
|
|
4
|
+
//
|
|
5
|
+
// Created by Rakshitha on 09/08/23.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
#import "MoEngageCardsReactConstants.h"
|
|
10
|
+
|
|
11
|
+
NSString* const kPayload = @"payload";
|
|
12
|
+
NSString* const kAppOpenCardsSyncListener = @"onAppOpenCardsSync";
|
|
13
|
+
NSString* const kPullToRefreshCardsSyncListener = @"onPullToRefreshCardsSync";
|
|
14
|
+
NSString* const kInboxOpenCardsSyncListener = @"onInboxOpenCardsSync";
|
|
15
|
+
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//
|
|
2
|
+
// MoEngageCardsReactUtil.h
|
|
3
|
+
// Pods
|
|
4
|
+
//
|
|
5
|
+
// Created by Rakshitha on 09/08/23.
|
|
6
|
+
//
|
|
7
|
+
#import <React/RCTBridgeModule.h>
|
|
8
|
+
#import <React/RCTEventEmitter.h>
|
|
9
|
+
|
|
10
|
+
@import MoEngagePluginCards;
|
|
11
|
+
|
|
12
|
+
@interface MoEngageCardsReactUtil : NSObject
|
|
13
|
+
+(NSString* _Nullable)fetchSyncType:(enum MoEngageCardsSyncEventType)eventType;
|
|
14
|
+
+(void)handleDataToReact:(NSDictionary<NSString *,id> * _Nonnull)cardPayload rejecter:(RCTPromiseRejectBlock _Nullable )rejecter resolver:(RCTPromiseResolveBlock _Nullable )resolver;
|
|
15
|
+
@end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
//
|
|
2
|
+
// MoEngageCardsReactUtil.m
|
|
3
|
+
// ReactNativeMoEngageCards
|
|
4
|
+
//
|
|
5
|
+
// Created by Rakshitha on 09/08/23.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
#import <Foundation/Foundation.h>
|
|
9
|
+
#import "MoEngageCardsReactUtil.h"
|
|
10
|
+
#import "MoEngageCardsReactConstants.h"
|
|
11
|
+
|
|
12
|
+
@implementation MoEngageCardsReactUtil: NSObject
|
|
13
|
+
|
|
14
|
+
+(NSString*)fetchSyncType:(enum MoEngageCardsSyncEventType)eventType {
|
|
15
|
+
switch (eventType) {
|
|
16
|
+
case MoEngageCardsSyncEventTypePullToRefresh:
|
|
17
|
+
return kPullToRefreshCardsSyncListener;
|
|
18
|
+
|
|
19
|
+
case MoEngageCardsSyncEventTypeAppOpen:
|
|
20
|
+
return kAppOpenCardsSyncListener;
|
|
21
|
+
|
|
22
|
+
case MoEngageCardsSyncEventTypeInboxOpen:
|
|
23
|
+
return kInboxOpenCardsSyncListener;
|
|
24
|
+
|
|
25
|
+
default:
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
28
|
+
return nil;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
+(void)handleDataToReact:(NSDictionary<NSString *,id> * _Nonnull)cardPayload rejecter:(RCTPromiseRejectBlock)rejecter resolver:(RCTPromiseResolveBlock)resolver {
|
|
32
|
+
NSError *error;
|
|
33
|
+
NSData * jsonData = [NSJSONSerialization dataWithJSONObject:cardPayload options:0 error:&error];
|
|
34
|
+
if (jsonData) {
|
|
35
|
+
NSString *strPayload = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
|
|
36
|
+
resolver(strPayload);
|
|
37
|
+
} else {
|
|
38
|
+
rejecter([NSString stringWithFormat:@"%ld", (long)error.code], error.localizedDescription, error);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
@end
|
package/package.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "react-native-moengage-cards",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Cards Module for the MoEngage Platform",
|
|
5
|
+
"main": "src/index.ts",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"moengage",
|
|
8
|
+
"react-native",
|
|
9
|
+
"ios",
|
|
10
|
+
"android",
|
|
11
|
+
"plugin",
|
|
12
|
+
"cards"
|
|
13
|
+
],
|
|
14
|
+
"files": [
|
|
15
|
+
"android",
|
|
16
|
+
"ios",
|
|
17
|
+
"src",
|
|
18
|
+
"package.json",
|
|
19
|
+
"ReactNativeMoEngageCards.podspec",
|
|
20
|
+
"README.md",
|
|
21
|
+
"!**/__tests__",
|
|
22
|
+
"!**/__mocks__"
|
|
23
|
+
],
|
|
24
|
+
"scripts": {
|
|
25
|
+
"test": "jest"
|
|
26
|
+
},
|
|
27
|
+
"author": {
|
|
28
|
+
"name": "MoEngage",
|
|
29
|
+
"email": "mobiledevs@moengage.com"
|
|
30
|
+
},
|
|
31
|
+
"license": "ISC",
|
|
32
|
+
"peerDependencies": {
|
|
33
|
+
"react-native-moengage": ">8.5.3"
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"@types/jest": "^29.5.0",
|
|
37
|
+
"@types/react-native": "^0.69.3",
|
|
38
|
+
"@tsconfig/react-native": "^2.0.2",
|
|
39
|
+
"ts-jest": "^29.1.0",
|
|
40
|
+
"typescript": "^4.3.0"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import { MODULE_TAG } from "./internal/Constants";
|
|
2
|
+
import MoEngageCardHandler from "./internal/MoEngageCardHandler";
|
|
3
|
+
import MoEngageCardsCache from "./internal/MoEngageCardsCache";
|
|
4
|
+
import Card from "./model/Card";
|
|
5
|
+
import CardInfo from "./model/CardInfo";
|
|
6
|
+
import CardsData from "./model/CardsData";
|
|
7
|
+
import SyncCompleteData from "./model/SyncData";
|
|
8
|
+
import { MoEngageLogger } from "react-native-moengage";
|
|
9
|
+
import SyncType from "./model/enums/SyncType";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Helper to interact with the cards feature.
|
|
13
|
+
*
|
|
14
|
+
* @since 1.0.0
|
|
15
|
+
* @author Abhishek Kumar
|
|
16
|
+
*/
|
|
17
|
+
namespace ReactMoEngageCards {
|
|
18
|
+
|
|
19
|
+
const TAG = `${MODULE_TAG}ReactMoEngageCards`;
|
|
20
|
+
|
|
21
|
+
let moEngageCardHandler: MoEngageCardHandler;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Initialize the Card Plugin
|
|
25
|
+
*
|
|
26
|
+
* @param {string} appId - MoEngage AppId
|
|
27
|
+
* @since 1.0.0
|
|
28
|
+
*/
|
|
29
|
+
export function initialize(appId: string): void {
|
|
30
|
+
MoEngageLogger.verbose(`${TAG} initialize() : `);
|
|
31
|
+
moEngageCardHandler = new MoEngageCardHandler(appId);
|
|
32
|
+
moEngageCardHandler.initialize();
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Set a listener to receive callback for cards refresh on App open
|
|
37
|
+
* Notes: This method must be call before initialize to get callback properly
|
|
38
|
+
*
|
|
39
|
+
* @param onSyncComplete - Callback to be trigger on sync complete
|
|
40
|
+
* @since 1.0.0
|
|
41
|
+
*/
|
|
42
|
+
export function setAppOpenSyncListener(onSyncComplete: (data: SyncCompleteData | null) => void): void {
|
|
43
|
+
MoEngageLogger.verbose(`${TAG} setAppOpenSyncListener() : `);
|
|
44
|
+
MoEngageCardsCache.cacheEventListenerCallback(SyncType.APP_OPEN, onSyncComplete);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Refresh the cards on user request
|
|
49
|
+
*
|
|
50
|
+
* @param onSyncComplete - Callback to be trigger on sync complete
|
|
51
|
+
* @since 1.0.0
|
|
52
|
+
*/
|
|
53
|
+
export function refreshCards(onSyncComplete: (data: SyncCompleteData | null) => void): void {
|
|
54
|
+
MoEngageLogger.verbose(`${TAG} refreshCards() : `);
|
|
55
|
+
moEngageCardHandler?.refreshCards(onSyncComplete);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Notify the MoEngage SDK that card section has loaded
|
|
60
|
+
*
|
|
61
|
+
* @since 1.0.0
|
|
62
|
+
*/
|
|
63
|
+
export function onCardSectionLoaded(onSyncComplete: (data: SyncCompleteData | null) => void): void {
|
|
64
|
+
MoEngageLogger.verbose(`${TAG} onCardSectionLoaded() : `);
|
|
65
|
+
moEngageCardHandler?.onCardSectionLoaded(onSyncComplete);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Notifies the SDK that the inbox view is gone to the background
|
|
70
|
+
*
|
|
71
|
+
* @since 1.0.0
|
|
72
|
+
*/
|
|
73
|
+
export function onCardSectionUnLoaded(): void {
|
|
74
|
+
MoEngageLogger.verbose(`${TAG} onCardSectionUnLoaded() : `);
|
|
75
|
+
moEngageCardHandler?.onCardSectionUnLoaded();
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Returns a list of categories to be shown
|
|
80
|
+
*
|
|
81
|
+
* @returns list of category
|
|
82
|
+
* @since 1.0.0
|
|
83
|
+
*/
|
|
84
|
+
export async function getCardsCategories(): Promise<Array<string>> {
|
|
85
|
+
MoEngageLogger.verbose(`${TAG} getCardsCategories() : `);
|
|
86
|
+
return moEngageCardHandler?.getCardsCategories();
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Fetches all cards related data
|
|
91
|
+
*
|
|
92
|
+
* @return instance of {@link CardInfo}
|
|
93
|
+
* @since 1.0.0
|
|
94
|
+
*/
|
|
95
|
+
export async function getCardsInfo(): Promise<CardInfo> {
|
|
96
|
+
MoEngageLogger.verbose(`${TAG} getCardsInfo() : `);
|
|
97
|
+
return moEngageCardHandler?.getCardsInfo();
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Returns a list of eligible cards for the provided category.
|
|
102
|
+
* To fetch all cards irrespective of categories pass in the category as [All]
|
|
103
|
+
*
|
|
104
|
+
* @param {string} category - category for which cards should be fetched.
|
|
105
|
+
* @returns instance of {@link CardsData}
|
|
106
|
+
* @since 1.0.0
|
|
107
|
+
*/
|
|
108
|
+
export async function getCardsForCategory(category: string): Promise<CardsData> {
|
|
109
|
+
MoEngageLogger.verbose(`${TAG} getCardsForCategory() : `);
|
|
110
|
+
return moEngageCardHandler?.getCardsForCategory(category);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* fetch all cards
|
|
115
|
+
*
|
|
116
|
+
* @returns instance of {@link CardsData}
|
|
117
|
+
* @since 1.0.0
|
|
118
|
+
*/
|
|
119
|
+
export async function fetchCards(): Promise<CardsData> {
|
|
120
|
+
MoEngageLogger.verbose(`${TAG} fetchCards() : `);
|
|
121
|
+
return moEngageCardHandler?.fetchCards();
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Deletes the multiple cards
|
|
126
|
+
*
|
|
127
|
+
* @param {Array<Card>} cards - all the cards which need to be deleted
|
|
128
|
+
* @since 1.0.0
|
|
129
|
+
*/
|
|
130
|
+
export function deleteCards(cards: Array<Card>): void {
|
|
131
|
+
MoEngageLogger.verbose(`${TAG} deleteCards() : `);
|
|
132
|
+
moEngageCardHandler?.deleteCards(cards);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Deletes the single cards
|
|
137
|
+
*
|
|
138
|
+
* @param {Card} cards - cards which need to be deleted
|
|
139
|
+
* @since 1.0.0
|
|
140
|
+
*/
|
|
141
|
+
export function deleteCard(card: Card): void {
|
|
142
|
+
MoEngageLogger.verbose(`${TAG} deleteCard() : `);
|
|
143
|
+
moEngageCardHandler?.deleteCards([card]);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Return true if All cards category should be shown
|
|
148
|
+
*
|
|
149
|
+
* @since 1.0.0
|
|
150
|
+
*/
|
|
151
|
+
export async function isAllCategoryEnabled(): Promise<boolean> {
|
|
152
|
+
MoEngageLogger.verbose(`${TAG} isAllCategoryEnabled() : `);
|
|
153
|
+
return moEngageCardHandler?.isAllCategoryEnabled();
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Marks a card as clicked and tracks an event for statistical purpose
|
|
158
|
+
*
|
|
159
|
+
* @param {Card} card - cards which is clicked
|
|
160
|
+
* @param {number} widgetId - unique identifier for the widget that was clicked.
|
|
161
|
+
* @since 1.0.0
|
|
162
|
+
*/
|
|
163
|
+
export function cardClicked(card: Card, widgetId: number): void {
|
|
164
|
+
MoEngageLogger.verbose(`${TAG} cardClicked() : `);
|
|
165
|
+
moEngageCardHandler?.cardClicked(card, widgetId);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Track card delivery to inbox.
|
|
170
|
+
*
|
|
171
|
+
* @since 1.0.0
|
|
172
|
+
*/
|
|
173
|
+
export function cardDelivered(): void {
|
|
174
|
+
MoEngageLogger.verbose(`${TAG} cardDelivered() : `);
|
|
175
|
+
moEngageCardHandler?.cardDelivered();
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Fetch count of new cards.
|
|
180
|
+
*
|
|
181
|
+
* @returns number of new cards
|
|
182
|
+
* @since 1.0.0
|
|
183
|
+
*/
|
|
184
|
+
export async function getNewCardsCount(): Promise<number> {
|
|
185
|
+
MoEngageLogger.verbose(`${TAG} getNewCardsCount() : `);
|
|
186
|
+
return moEngageCardHandler?.getNewCardsCount();
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Fetch count of unclicked cards.
|
|
191
|
+
*
|
|
192
|
+
* @returns number of unclicked cards
|
|
193
|
+
* @since 1.0.0
|
|
194
|
+
*/
|
|
195
|
+
export async function getUnClickedCardsCount(): Promise<number> {
|
|
196
|
+
MoEngageLogger.verbose(`${TAG} getUnClickedCardsCount() : `);
|
|
197
|
+
return moEngageCardHandler?.getUnClickedCardsCount();
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Track cards shown and update delivery counters accordingly
|
|
202
|
+
*
|
|
203
|
+
* @param {Card} card - card which is shown to user
|
|
204
|
+
* @since 1.0.0
|
|
205
|
+
*/
|
|
206
|
+
export function cardShown(card: Card): void {
|
|
207
|
+
MoEngageLogger.verbose(`${TAG} cardShown() : `);
|
|
208
|
+
moEngageCardHandler.cardShown(card);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
export default ReactMoEngageCards;
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Entry for the MoEngage Cards Plugin
|
|
3
|
+
* @author Abhishek Kumar
|
|
4
|
+
* @since 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import CampaignState from "./model/CampaignState";
|
|
8
|
+
import Card from "./model/Card";
|
|
9
|
+
import CardInfo from "./model/CardInfo";
|
|
10
|
+
import CardsData from "./model/CardsData";
|
|
11
|
+
import Container from "./model/Container";
|
|
12
|
+
import DisplayControl from "./model/DisplayControl";
|
|
13
|
+
import MetaData from "./model/MetaData";
|
|
14
|
+
import ShowTime from "./model/ShowTime";
|
|
15
|
+
import SyncCompleteData from "./model/SyncData";
|
|
16
|
+
import Template from "./model/Template";
|
|
17
|
+
import Widget from "./model/Widget";
|
|
18
|
+
import Action from "./model/action/Action";
|
|
19
|
+
import NavigationAction from "./model/action/NavigationAction";
|
|
20
|
+
import ActionType from "./model/enums/ActionType";
|
|
21
|
+
import NavigationType from "./model/enums/NavigationType";
|
|
22
|
+
import SyncType from "./model/enums/SyncType";
|
|
23
|
+
import TemplateType from "./model/enums/TemplateType";
|
|
24
|
+
import WidgetType from "./model/enums/WidgetType";
|
|
25
|
+
import ButtonStyle from "./model/styles/ButtonStyle";
|
|
26
|
+
import ContainerStyle from "./model/styles/ContainerStyle";
|
|
27
|
+
import ImageStyle from "./model/styles/ImageStyle";
|
|
28
|
+
import TextStyle from "./model/styles/TextStyle";
|
|
29
|
+
import WidgetStyle from "./model/styles/WidgetStyle";
|
|
30
|
+
import ReactMoEngageCards from "./ReactMoEngageCards";
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
export default ReactMoEngageCards;
|
|
34
|
+
export {
|
|
35
|
+
CampaignState,
|
|
36
|
+
Card,
|
|
37
|
+
CardInfo,
|
|
38
|
+
CardsData,
|
|
39
|
+
Container,
|
|
40
|
+
DisplayControl,
|
|
41
|
+
MetaData,
|
|
42
|
+
ShowTime,
|
|
43
|
+
SyncCompleteData,
|
|
44
|
+
Template,
|
|
45
|
+
Widget,
|
|
46
|
+
Action,
|
|
47
|
+
NavigationAction,
|
|
48
|
+
ActionType,
|
|
49
|
+
NavigationType,
|
|
50
|
+
SyncType,
|
|
51
|
+
TemplateType,
|
|
52
|
+
WidgetType,
|
|
53
|
+
ButtonStyle,
|
|
54
|
+
ContainerStyle,
|
|
55
|
+
ImageStyle,
|
|
56
|
+
TextStyle,
|
|
57
|
+
WidgetStyle
|
|
58
|
+
};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file All the string constant used to build the payload & object
|
|
3
|
+
* @author Abhishek Kumar
|
|
4
|
+
* @since 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export const MODULE_TAG = "MoEngageReactCards_"
|
|
8
|
+
|
|
9
|
+
export const keyPayload = "payload";
|
|
10
|
+
|
|
11
|
+
//Card Key Name Constants
|
|
12
|
+
export const keyAppId = "appId";
|
|
13
|
+
export const keyAccountMeta = "accountMeta";
|
|
14
|
+
export const keyData = "data";
|
|
15
|
+
export const keySyncCompleteData = "syncCompleteData";
|
|
16
|
+
export const keyHasUpdates = "hasUpdates";
|
|
17
|
+
export const keySyncType = "syncType";
|
|
18
|
+
export const keyId = "id";
|
|
19
|
+
export const keyCardId = "card_id";
|
|
20
|
+
export const keyCategory = "category";
|
|
21
|
+
export const keyTemplateData = "template_data";
|
|
22
|
+
export const keyMetaData = "meta_data";
|
|
23
|
+
export const keyAdditionalMetaData = "metaData";
|
|
24
|
+
export const keyTemplateType = "type";
|
|
25
|
+
export const keyKVPairs = "kvPairs";
|
|
26
|
+
|
|
27
|
+
//Template Constants
|
|
28
|
+
export const keyContainers = "containers";
|
|
29
|
+
export const keyContainerId = "id";
|
|
30
|
+
export const keyContainerType = "type";
|
|
31
|
+
export const keyContainerStyle = "style";
|
|
32
|
+
export const keyBackgroundColor = "bgColor";
|
|
33
|
+
export const keyActions = "actions";
|
|
34
|
+
export const keyWidgets = "widgets";
|
|
35
|
+
export const keyWidgetId = "id";
|
|
36
|
+
export const keyWidgetType = "type";
|
|
37
|
+
export const keyWidgetContent = "content";
|
|
38
|
+
export const keyWidgetStyle = "style";
|
|
39
|
+
export const keyFontSize = "fontSize";
|
|
40
|
+
export const keyActionType = "name";
|
|
41
|
+
export const keyActionValue = "value";
|
|
42
|
+
export const keyNavigationType = "type";
|
|
43
|
+
|
|
44
|
+
//Default Values
|
|
45
|
+
export const defaultFontSize = -1;
|
|
46
|
+
export const defaultTextBgColor = "#00FFFFFF";
|
|
47
|
+
export const defaultContainerBgColor = "#FFFFFF";
|
|
48
|
+
|
|
49
|
+
//CampaignState
|
|
50
|
+
export const keyLocalShowCount = "localShowCount";
|
|
51
|
+
export const keyTotalShowCount = "totalShowCount";
|
|
52
|
+
export const keyIsClicked = "isClicked";
|
|
53
|
+
export const keyFirstSeen = "firstSeen";
|
|
54
|
+
export const keyFirstReceived = "firstReceived";
|
|
55
|
+
export const keyIsNewCard = "isNewCard";
|
|
56
|
+
export const keyCampaignPayload = "campaignPayload";
|
|
57
|
+
export const keyCampaignState = "campaignState";
|
|
58
|
+
export const keyDeletionTime = "deletionTime";
|
|
59
|
+
export const keyUpdatedAt = "updated_at";
|
|
60
|
+
export const keyCreatedAt = "created_at";
|
|
61
|
+
|
|
62
|
+
//Display Control Constants
|
|
63
|
+
export const keyExpireAt = "expire_at";
|
|
64
|
+
export const keyExpireAfterSeen = "expire_after_seen";
|
|
65
|
+
export const keyExpireAfterDelivered = "expire_after_delivered";
|
|
66
|
+
export const keyMaxCount = "max_times_to_show";
|
|
67
|
+
export const keyShowTime = "show_time";
|
|
68
|
+
export const keyIsPinned = "is_pin";
|
|
69
|
+
export const keyStartTime = "start_time";
|
|
70
|
+
export const keyEndTime = "end_time";
|
|
71
|
+
|
|
72
|
+
//Card Data export constants
|
|
73
|
+
export const keyDisplayControl = "display_controls";
|
|
74
|
+
export const keyShouldShowAllTab = "shouldShowAllTab";
|
|
75
|
+
export const keyCategories = "categories";
|
|
76
|
+
export const keyCards = "cards";
|
|
77
|
+
export const keyCard = "card";
|
|
78
|
+
export const keyWidgetIdentifier = "widgetId";
|
|
79
|
+
export const keyIsAllCategoryEnabled = "isAllCategoryEnabled";
|
|
80
|
+
export const keyNewCardsCount = "newCardsCount";
|
|
81
|
+
export const keyUnClickedCardsCount = "unClickedCardsCount";
|
|
82
|
+
|
|
83
|
+
//JSON Values export constants
|
|
84
|
+
export const argumentPullToRefreshSync = "onPullToRefreshCardsSync";
|
|
85
|
+
export const argumentInboxOpenSync = "onInboxOpenCardsSync";
|
|
86
|
+
export const argumentAppOpenSync = "onAppOpenCardsSync";
|