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.
Files changed (59) hide show
  1. package/README.md +10 -0
  2. package/ReactNativeMoEngageCards.podspec +25 -0
  3. package/android/.editorconfig +8 -0
  4. package/android/build.gradle +58 -0
  5. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  6. package/android/gradle/wrapper/gradle-wrapper.properties +18 -0
  7. package/android/gradle.properties +14 -0
  8. package/android/gradlew +234 -0
  9. package/android/gradlew.bat +89 -0
  10. package/android/src/main/AndroidManifest.xml +16 -0
  11. package/android/src/main/java/com/moengage/react/cards/Constants.kt +12 -0
  12. package/android/src/main/java/com/moengage/react/cards/EventEmitterImpl.kt +62 -0
  13. package/android/src/main/java/com/moengage/react/cards/MoEngageCardsBridge.kt +228 -0
  14. package/android/src/main/java/com/moengage/react/cards/MoEngageCardsPackage.kt +35 -0
  15. package/android/src/main/java/com/moengage/react/cards/PayloadGenerator.kt +26 -0
  16. package/ios/Cards.xcodeproj/project.pbxproj +302 -0
  17. package/ios/Cards.xcworkspace/contents.xcworkspacedata +7 -0
  18. package/ios/Cards.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  19. package/ios/MoEngageCardsBridge.h +9 -0
  20. package/ios/MoEngageCardsBridge.m +149 -0
  21. package/ios/MoEngageCardsReactConstants.h +14 -0
  22. package/ios/MoEngageCardsReactConstants.m +15 -0
  23. package/ios/MoEngageCardsReactUtil.h +15 -0
  24. package/ios/MoEngageCardsReactUtil.m +44 -0
  25. package/package.json +42 -0
  26. package/src/ReactMoEngageCards.ts +212 -0
  27. package/src/index.ts +58 -0
  28. package/src/internal/Constants.ts +86 -0
  29. package/src/internal/MoEngageCardHandler.ts +265 -0
  30. package/src/internal/MoEngageCardsCache.ts +31 -0
  31. package/src/internal/utils/JsonToModelMapper.ts +267 -0
  32. package/src/internal/utils/ModelToJsonMapper.ts +250 -0
  33. package/src/internal/utils/PayloadBuilder.ts +68 -0
  34. package/src/internal/utils/PayloadParser.ts +53 -0
  35. package/src/internal/utils/PlatformPayloadBuilder.ts +81 -0
  36. package/src/internal/utils/Util.ts +16 -0
  37. package/src/model/CampaignState.ts +54 -0
  38. package/src/model/Card.ts +51 -0
  39. package/src/model/CardInfo.ts +36 -0
  40. package/src/model/CardsData.ts +29 -0
  41. package/src/model/Container.ts +59 -0
  42. package/src/model/DisplayControl.ts +70 -0
  43. package/src/model/MetaData.ts +90 -0
  44. package/src/model/ShowTime.ts +27 -0
  45. package/src/model/SyncData.ts +30 -0
  46. package/src/model/Template.ts +37 -0
  47. package/src/model/Widget.ts +59 -0
  48. package/src/model/action/Action.ts +22 -0
  49. package/src/model/action/NavigationAction.ts +39 -0
  50. package/src/model/enums/ActionType.ts +16 -0
  51. package/src/model/enums/NavigationType.ts +28 -0
  52. package/src/model/enums/SyncType.ts +28 -0
  53. package/src/model/enums/TemplateType.ts +22 -0
  54. package/src/model/enums/WidgetType.ts +28 -0
  55. package/src/model/styles/ButtonStyle.ts +23 -0
  56. package/src/model/styles/ContainerStyle.ts +20 -0
  57. package/src/model/styles/ImageStyle.ts +16 -0
  58. package/src/model/styles/TextStyle.ts +19 -0
  59. 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";