appambit 0.1.1 → 0.2.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/Appambit.podspec +1 -1
- package/README.md +1 -1
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/appambit/AppambitCmsModule.kt +131 -0
- package/android/src/main/java/com/appambit/AppambitPackage.kt +4 -0
- package/android/src/main/java/com/appambit/AppambitRemoteConfigModule.kt +38 -0
- package/ios/AppAmbitCms.h +5 -0
- package/ios/AppAmbitCms.mm +185 -0
- package/ios/AppAmbitRemoteConfig.h +5 -0
- package/ios/AppAmbitRemoteConfig.mm +33 -0
- package/ios/AppAmbitSDKWrapper.swift +47 -1
- package/ios/Appambit.h +4 -0
- package/package.json +1 -1
- package/src/CmsQuery.ts +114 -0
- package/src/NativeAppambitCms.ts +9 -0
- package/src/NativeAppambitRemoteConfig.ts +11 -0
- package/src/index.tsx +58 -11
- package/lib/module/NativeAppambitAnalytics.js +0 -5
- package/lib/module/NativeAppambitAnalytics.js.map +0 -1
- package/lib/module/NativeAppambitCore.js +0 -5
- package/lib/module/NativeAppambitCore.js.map +0 -1
- package/lib/module/NativeAppambitCrashes.js +0 -5
- package/lib/module/NativeAppambitCrashes.js.map +0 -1
- package/lib/module/index.js +0 -126
- package/lib/module/index.js.map +0 -1
- package/lib/module/package.json +0 -1
- package/lib/typescript/appambit_test_app/src/App.d.ts +0 -2
- package/lib/typescript/appambit_test_app/src/App.d.ts.map +0 -1
- package/lib/typescript/appambit_test_app/src/components/CustomButton.d.ts +0 -8
- package/lib/typescript/appambit_test_app/src/components/CustomButton.d.ts.map +0 -1
- package/lib/typescript/appambit_test_app/src/components/CustomInput.d.ts +0 -10
- package/lib/typescript/appambit_test_app/src/components/CustomInput.d.ts.map +0 -1
- package/lib/typescript/appambit_test_app/src/screens/AnalyticsScreen.d.ts +0 -2
- package/lib/typescript/appambit_test_app/src/screens/AnalyticsScreen.d.ts.map +0 -1
- package/lib/typescript/appambit_test_app/src/screens/CrashesScreen.d.ts +0 -2
- package/lib/typescript/appambit_test_app/src/screens/CrashesScreen.d.ts.map +0 -1
- package/lib/typescript/appambit_test_app/src/screens/SecondScreen.d.ts +0 -9
- package/lib/typescript/appambit_test_app/src/screens/SecondScreen.d.ts.map +0 -1
- package/lib/typescript/appambit_test_app/src/utils/uuid.d.ts +0 -2
- package/lib/typescript/appambit_test_app/src/utils/uuid.d.ts.map +0 -1
- package/lib/typescript/package.json +0 -1
- package/lib/typescript/src/NativeAppambitAnalytics.d.ts +0 -14
- package/lib/typescript/src/NativeAppambitAnalytics.d.ts.map +0 -1
- package/lib/typescript/src/NativeAppambitCore.d.ts +0 -8
- package/lib/typescript/src/NativeAppambitCore.d.ts.map +0 -1
- package/lib/typescript/src/NativeAppambitCrashes.d.ts +0 -23
- package/lib/typescript/src/NativeAppambitCrashes.d.ts.map +0 -1
- package/lib/typescript/src/index.d.ts +0 -27
- package/lib/typescript/src/index.d.ts.map +0 -1
package/Appambit.podspec
CHANGED
package/README.md
CHANGED
package/android/build.gradle
CHANGED
|
@@ -74,5 +74,5 @@ def kotlin_version = getExtOrDefault("kotlinVersion")
|
|
|
74
74
|
dependencies {
|
|
75
75
|
implementation "com.facebook.react:react-android"
|
|
76
76
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
77
|
-
implementation
|
|
77
|
+
implementation("com.appambit:appambit:0.5.0")
|
|
78
78
|
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
package com.appambit
|
|
2
|
+
|
|
3
|
+
import com.appambit.sdk.Cms
|
|
4
|
+
import com.appambit.sdk.services.interfaces.ICmsQuery
|
|
5
|
+
import com.facebook.react.bridge.*
|
|
6
|
+
import org.json.JSONArray
|
|
7
|
+
import org.json.JSONObject
|
|
8
|
+
|
|
9
|
+
class AppambitCmsModule(reactContext: ReactApplicationContext) : NativeAppambitCmsSpec(reactContext) {
|
|
10
|
+
|
|
11
|
+
override fun getName(): String {
|
|
12
|
+
return NAME
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
override fun getList(contentType: String, filters: ReadableArray, promise: Promise) {
|
|
16
|
+
try {
|
|
17
|
+
val query: ICmsQuery<JSONObject> = Cms.content(contentType, java.lang.Object::class.java as Class<JSONObject>)
|
|
18
|
+
|
|
19
|
+
for (i in 0 until filters.size()) {
|
|
20
|
+
val filter = filters.getMap(i) ?: continue
|
|
21
|
+
|
|
22
|
+
if (filter.hasKey("method")) {
|
|
23
|
+
val method = filter.getString("method")
|
|
24
|
+
val args = filter.getArray("args")
|
|
25
|
+
if (method != null && args != null) {
|
|
26
|
+
when (method) {
|
|
27
|
+
"search" -> query.search(args.getString(0))
|
|
28
|
+
"startsWith" -> query.startsWith(args.getString(0), args.getString(1))
|
|
29
|
+
"inList" -> {
|
|
30
|
+
val listArgs = args.getArray(1)
|
|
31
|
+
val list = mutableListOf<String>()
|
|
32
|
+
if (listArgs != null) {
|
|
33
|
+
for (j in 0 until listArgs.size()) list.add(listArgs.getString(j) ?: "")
|
|
34
|
+
}
|
|
35
|
+
query.inList(args.getString(0) ?: "", list)
|
|
36
|
+
}
|
|
37
|
+
"notInList" -> {
|
|
38
|
+
val listArgs = args.getArray(1)
|
|
39
|
+
val list = mutableListOf<String>()
|
|
40
|
+
if (listArgs != null) {
|
|
41
|
+
for (j in 0 until listArgs.size()) list.add(listArgs.getString(j) ?: "")
|
|
42
|
+
}
|
|
43
|
+
query.notInList(args.getString(0) ?: "", list)
|
|
44
|
+
}
|
|
45
|
+
"orderByAscending" -> query.orderByAscending(args.getString(0))
|
|
46
|
+
"orderByDescending" -> query.orderByDescending(args.getString(0))
|
|
47
|
+
"getPage" -> query.getPage(args.getInt(0))
|
|
48
|
+
"getPerPage" -> query.getPerPage(args.getInt(0))
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
} else if (filter.hasKey("field") && filter.hasKey("operator")) {
|
|
52
|
+
val field = filter.getString("field") ?: continue
|
|
53
|
+
val op = filter.getString("operator") ?: "="
|
|
54
|
+
|
|
55
|
+
if (filter.getType("value") == ReadableType.Number) {
|
|
56
|
+
val value = filter.getDouble("value")
|
|
57
|
+
when (op) {
|
|
58
|
+
">" -> query.greaterThan(field, value)
|
|
59
|
+
">=" -> query.greaterThanOrEqual(field, value)
|
|
60
|
+
"<" -> query.lessThan(field, value)
|
|
61
|
+
"<=" -> query.lessThanOrEqual(field, value)
|
|
62
|
+
"=" -> query.equals(field, value.toString())
|
|
63
|
+
"!=" -> query.notEquals(field, value.toString())
|
|
64
|
+
}
|
|
65
|
+
} else if (filter.getType("value") == ReadableType.String) {
|
|
66
|
+
val value = filter.getString("value") ?: ""
|
|
67
|
+
when (op) {
|
|
68
|
+
"=" -> query.equals(field, value)
|
|
69
|
+
"!=" -> query.notEquals(field, value)
|
|
70
|
+
"LIKE" -> query.contains(field, value)
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
query.list.then { items ->
|
|
77
|
+
val result = Arguments.createArray()
|
|
78
|
+
if (items != null) {
|
|
79
|
+
for (item in items) {
|
|
80
|
+
result.pushMap(convertJsonToMap(item))
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
promise.resolve(result)
|
|
84
|
+
}
|
|
85
|
+
} catch (e: Exception) {
|
|
86
|
+
promise.reject("CMS_GET_LIST_ERROR", e.message, e)
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
override fun clearCache(contentType: String) {
|
|
91
|
+
Cms.clearCache(contentType)
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
override fun clearAllCache() {
|
|
95
|
+
Cms.clearAllCache()
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
private fun convertJsonToMap(jsonObject: JSONObject): WritableMap {
|
|
99
|
+
val map = Arguments.createMap()
|
|
100
|
+
val iterator = jsonObject.keys()
|
|
101
|
+
while (iterator.hasNext()) {
|
|
102
|
+
val key = iterator.next()
|
|
103
|
+
val value = jsonObject.get(key)
|
|
104
|
+
if (value is String) map.putString(key, value)
|
|
105
|
+
else if (value is Int) map.putInt(key, value)
|
|
106
|
+
else if (value is Double) map.putDouble(key, value)
|
|
107
|
+
else if (value is Boolean) map.putBoolean(key, value)
|
|
108
|
+
else if (value is JSONObject) map.putMap(key, convertJsonToMap(value))
|
|
109
|
+
else if (value is JSONArray) map.putArray(key, convertJsonToArray(value))
|
|
110
|
+
}
|
|
111
|
+
return map
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
private fun convertJsonToArray(jsonArray: JSONArray): WritableArray {
|
|
115
|
+
val array = Arguments.createArray()
|
|
116
|
+
for (i in 0 until jsonArray.length()) {
|
|
117
|
+
val value = jsonArray.get(i)
|
|
118
|
+
if (value is String) array.pushString(value)
|
|
119
|
+
else if (value is Int) array.pushInt(value)
|
|
120
|
+
else if (value is Double) array.pushDouble(value)
|
|
121
|
+
else if (value is Boolean) array.pushBoolean(value)
|
|
122
|
+
else if (value is JSONObject) array.pushMap(convertJsonToMap(value))
|
|
123
|
+
else if (value is JSONArray) array.pushArray(convertJsonToArray(value))
|
|
124
|
+
}
|
|
125
|
+
return array
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
companion object {
|
|
129
|
+
const val NAME = "AppAmbitCms"
|
|
130
|
+
}
|
|
131
|
+
}
|
|
@@ -13,6 +13,8 @@ class AppambitPackage : BaseReactPackage() {
|
|
|
13
13
|
AppambitModule.NAME -> AppambitModule(reactContext)
|
|
14
14
|
AppambitCrashesModule.NAME -> AppambitCrashesModule(reactContext)
|
|
15
15
|
AppambitAnalyticsModule.NAME -> AppambitAnalyticsModule(reactContext)
|
|
16
|
+
AppambitRemoteConfigModule.NAME -> AppambitRemoteConfigModule(reactContext)
|
|
17
|
+
AppambitCmsModule.NAME -> AppambitCmsModule(reactContext)
|
|
16
18
|
else -> null
|
|
17
19
|
}
|
|
18
20
|
}
|
|
@@ -35,6 +37,8 @@ class AppambitPackage : BaseReactPackage() {
|
|
|
35
37
|
addInfo(AppambitModule.NAME)
|
|
36
38
|
addInfo(AppambitCrashesModule.NAME)
|
|
37
39
|
addInfo(AppambitAnalyticsModule.NAME)
|
|
40
|
+
addInfo(AppambitRemoteConfigModule.NAME)
|
|
41
|
+
addInfo(AppambitCmsModule.NAME)
|
|
38
42
|
|
|
39
43
|
moduleInfos
|
|
40
44
|
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
package com.appambit
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
4
|
+
import com.facebook.react.module.annotations.ReactModule
|
|
5
|
+
import com.appambit.sdk.RemoteConfig
|
|
6
|
+
|
|
7
|
+
@ReactModule(name = AppambitRemoteConfigModule.NAME)
|
|
8
|
+
class AppambitRemoteConfigModule(reactContext: ReactApplicationContext) :
|
|
9
|
+
NativeAppambitRemoteConfigSpec(reactContext) {
|
|
10
|
+
|
|
11
|
+
override fun getName(): String {
|
|
12
|
+
return NAME
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
override fun enable() {
|
|
16
|
+
RemoteConfig.enable()
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
override fun getString(key: String?): String {
|
|
20
|
+
return RemoteConfig.getString(key) ?: ""
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
override fun getBoolean(key: String?): Boolean {
|
|
24
|
+
return RemoteConfig.getBoolean(key)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
override fun getLong(key: String?): Double {
|
|
28
|
+
return RemoteConfig.getLong(key).toDouble()
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
override fun getDouble(key: String?): Double {
|
|
32
|
+
return RemoteConfig.getDouble(key)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
companion object {
|
|
36
|
+
const val NAME = "AppAmbitRemoteConfig"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
#import "AppAmbitCms.h"
|
|
2
|
+
#import "Appambit.h"
|
|
3
|
+
#import <Appambit-Swift.h>
|
|
4
|
+
#import <Foundation/Foundation.h>
|
|
5
|
+
@class CmsQueryObjC;
|
|
6
|
+
@interface CmsQueryObjC : NSObject
|
|
7
|
+
- (instancetype)search:(NSString *)query;
|
|
8
|
+
- (instancetype)equals:(NSString *)field value:(NSString *)value;
|
|
9
|
+
- (instancetype)notEquals:(NSString *)field value:(NSString *)value;
|
|
10
|
+
- (instancetype)contains:(NSString *)field value:(NSString *)value;
|
|
11
|
+
- (instancetype)startsWith:(NSString *)field value:(NSString *)value;
|
|
12
|
+
- (instancetype)greaterThan:(NSString *)field value:(id)value;
|
|
13
|
+
- (instancetype)greaterThanOrEqual:(NSString *)field value:(id)value;
|
|
14
|
+
- (instancetype)lessThan:(NSString *)field value:(id)value;
|
|
15
|
+
- (instancetype)lessThanOrEqual:(NSString *)field value:(id)value;
|
|
16
|
+
- (instancetype)inList:(NSString *)field values:(NSArray<NSString *> *)values;
|
|
17
|
+
- (instancetype)notInList:(NSString *)field values:(NSArray<NSString *> *)values;
|
|
18
|
+
- (instancetype)orderByAscending:(NSString *)field;
|
|
19
|
+
- (instancetype)orderByDescending:(NSString *)field;
|
|
20
|
+
- (instancetype)getPage:(NSInteger)page;
|
|
21
|
+
- (instancetype)getPerPage:(NSInteger)perPage;
|
|
22
|
+
- (void)getListWithCompletion:(void (^)(NSArray<id> *))completion;
|
|
23
|
+
@end
|
|
24
|
+
|
|
25
|
+
@implementation AppAmbitCms
|
|
26
|
+
RCT_EXPORT_MODULE(AppAmbitCms);
|
|
27
|
+
|
|
28
|
+
static NSMutableDictionary<NSString *, NSMutableArray<RCTPromiseResolveBlock> *> *pendingResolves = nil;
|
|
29
|
+
static NSLock *pendingLock = nil;
|
|
30
|
+
static NSMutableDictionary<NSString *, NSArray<id> *> *cmsCache = nil;
|
|
31
|
+
|
|
32
|
+
+ (void)initialize {
|
|
33
|
+
if (self == [AppAmbitCms class]) {
|
|
34
|
+
pendingResolves = [NSMutableDictionary new];
|
|
35
|
+
pendingLock = [[NSLock alloc] init];
|
|
36
|
+
cmsCache = [NSMutableDictionary new];
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
|
|
41
|
+
(const facebook::react::ObjCTurboModule::InitParams &)params
|
|
42
|
+
{
|
|
43
|
+
return std::make_shared<facebook::react::NativeAppambitCmsSpecJSI>(params);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
- (void)getList:(NSString *)contentType
|
|
47
|
+
filters:(NSArray *)filters
|
|
48
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
49
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
50
|
+
|
|
51
|
+
NSString *cacheKey = contentType;
|
|
52
|
+
if (filters && [filters isKindOfClass:[NSArray class]] && filters.count > 0) {
|
|
53
|
+
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:filters options:0 error:nil];
|
|
54
|
+
if (jsonData) {
|
|
55
|
+
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
|
|
56
|
+
cacheKey = [NSString stringWithFormat:@"%@_%@", contentType, jsonString];
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
[pendingLock lock];
|
|
61
|
+
|
|
62
|
+
if (cmsCache[cacheKey] != nil) {
|
|
63
|
+
[pendingLock unlock];
|
|
64
|
+
resolve(cmsCache[cacheKey]);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if (pendingResolves[cacheKey] != nil) {
|
|
69
|
+
[pendingResolves[cacheKey] addObject:resolve];
|
|
70
|
+
[pendingLock unlock];
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
pendingResolves[cacheKey] = [NSMutableArray arrayWithObject:resolve];
|
|
75
|
+
[pendingLock unlock];
|
|
76
|
+
|
|
77
|
+
CmsQueryObjC *query = [AppAmbitSdkWrapper getCmsQueryWithContentType:contentType];
|
|
78
|
+
|
|
79
|
+
if (filters && [filters isKindOfClass:[NSArray class]]) {
|
|
80
|
+
for (NSDictionary *filter in filters) {
|
|
81
|
+
if ([filter isKindOfClass:[NSDictionary class]]) {
|
|
82
|
+
if (filter[@"method"]) {
|
|
83
|
+
NSString *method = filter[@"method"];
|
|
84
|
+
NSArray *args = filter[@"args"];
|
|
85
|
+
|
|
86
|
+
if (args && [args isKindOfClass:[NSArray class]]) {
|
|
87
|
+
if ([method isEqualToString:@"search"] && args.count > 0) {
|
|
88
|
+
[query search:[NSString stringWithFormat:@"%@", args[0]]];
|
|
89
|
+
} else if ([method isEqualToString:@"startsWith"] && args.count > 1) {
|
|
90
|
+
[query startsWith:[NSString stringWithFormat:@"%@", args[0]] value:[NSString stringWithFormat:@"%@", args[1]]];
|
|
91
|
+
} else if ([method isEqualToString:@"inList"] && args.count > 1) {
|
|
92
|
+
if ([args[1] isKindOfClass:[NSArray class]]) {
|
|
93
|
+
[query inList:[NSString stringWithFormat:@"%@", args[0]] values:(NSArray<NSString *> *)args[1]];
|
|
94
|
+
}
|
|
95
|
+
} else if ([method isEqualToString:@"notInList"] && args.count > 1) {
|
|
96
|
+
if ([args[1] isKindOfClass:[NSArray class]]) {
|
|
97
|
+
[query notInList:[NSString stringWithFormat:@"%@", args[0]] values:(NSArray<NSString *> *)args[1]];
|
|
98
|
+
}
|
|
99
|
+
} else if ([method isEqualToString:@"orderByAscending"] && args.count > 0) {
|
|
100
|
+
[query orderByAscending:[NSString stringWithFormat:@"%@", args[0]]];
|
|
101
|
+
} else if ([method isEqualToString:@"orderByDescending"] && args.count > 0) {
|
|
102
|
+
[query orderByDescending:[NSString stringWithFormat:@"%@", args[0]]];
|
|
103
|
+
} else if ([method isEqualToString:@"getPage"] && args.count > 0) {
|
|
104
|
+
[query getPage:[args[0] intValue]];
|
|
105
|
+
} else if ([method isEqualToString:@"getPerPage"] && args.count > 0) {
|
|
106
|
+
[query getPerPage:[args[0] intValue]];
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
} else if (filter[@"field"] && filter[@"operator"]) {
|
|
110
|
+
NSString *field = filter[@"field"];
|
|
111
|
+
NSString *op = filter[@"operator"];
|
|
112
|
+
id value = filter[@"value"];
|
|
113
|
+
|
|
114
|
+
if (value) {
|
|
115
|
+
if ([value isKindOfClass:[NSNumber class]]) {
|
|
116
|
+
NSNumber *numValue = (NSNumber *)value;
|
|
117
|
+
if ([op isEqualToString:@">"]) {
|
|
118
|
+
[query greaterThan:field value:numValue];
|
|
119
|
+
} else if ([op isEqualToString:@">="]) {
|
|
120
|
+
[query greaterThanOrEqual:field value:numValue];
|
|
121
|
+
} else if ([op isEqualToString:@"<"]) {
|
|
122
|
+
[query lessThan:field value:numValue];
|
|
123
|
+
} else if ([op isEqualToString:@"<="]) {
|
|
124
|
+
[query lessThanOrEqual:field value:numValue];
|
|
125
|
+
} else if ([op isEqualToString:@"="]) {
|
|
126
|
+
[query equals:field value:[numValue stringValue]];
|
|
127
|
+
} else if ([op isEqualToString:@"!="]) {
|
|
128
|
+
[query notEquals:field value:[numValue stringValue]];
|
|
129
|
+
}
|
|
130
|
+
} else {
|
|
131
|
+
NSString *strValue = [NSString stringWithFormat:@"%@", value];
|
|
132
|
+
if ([op isEqualToString:@"="]) {
|
|
133
|
+
[query equals:field value:strValue];
|
|
134
|
+
} else if ([op isEqualToString:@"!="]) {
|
|
135
|
+
[query notEquals:field value:strValue];
|
|
136
|
+
} else if ([op isEqualToString:@"LIKE"]) {
|
|
137
|
+
[query contains:field value:strValue];
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
[query getListWithCompletion:^(NSArray<id> * _Nonnull items) {
|
|
147
|
+
[pendingLock lock];
|
|
148
|
+
|
|
149
|
+
if (items) {
|
|
150
|
+
cmsCache[cacheKey] = items;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
NSArray<RCTPromiseResolveBlock> *resolves = pendingResolves[cacheKey];
|
|
154
|
+
[pendingResolves removeObjectForKey:cacheKey];
|
|
155
|
+
[pendingLock unlock];
|
|
156
|
+
|
|
157
|
+
for (RCTPromiseResolveBlock res in resolves) {
|
|
158
|
+
res(items);
|
|
159
|
+
}
|
|
160
|
+
}];
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
- (void)clearCache:(NSString *)contentType {
|
|
164
|
+
[pendingLock lock];
|
|
165
|
+
NSMutableArray *keysToRemove = [NSMutableArray new];
|
|
166
|
+
for (NSString *key in cmsCache.allKeys) {
|
|
167
|
+
if ([key isEqualToString:contentType] || [key hasPrefix:[NSString stringWithFormat:@"%@_", contentType]]) {
|
|
168
|
+
[keysToRemove addObject:key];
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
[cmsCache removeObjectsForKeys:keysToRemove];
|
|
172
|
+
[pendingLock unlock];
|
|
173
|
+
|
|
174
|
+
[AppAmbitSdkWrapper clearCmsCacheWithContentType:contentType];
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
- (void)clearAllCache {
|
|
178
|
+
[pendingLock lock];
|
|
179
|
+
[cmsCache removeAllObjects];
|
|
180
|
+
[pendingLock unlock];
|
|
181
|
+
|
|
182
|
+
[AppAmbitSdkWrapper clearAllCmsCache];
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
@end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#import "AppAmbitRemoteConfig.h"
|
|
2
|
+
#import <Appambit-Swift.h>
|
|
3
|
+
|
|
4
|
+
@implementation AppAmbitRemoteConfig
|
|
5
|
+
RCT_EXPORT_MODULE(AppAmbitRemoteConfig);
|
|
6
|
+
|
|
7
|
+
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
|
|
8
|
+
(const facebook::react::ObjCTurboModule::InitParams &)params
|
|
9
|
+
{
|
|
10
|
+
return std::make_shared<facebook::react::NativeAppambitRemoteConfigSpecJSI>(params);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
- (void)enable {
|
|
14
|
+
[AppAmbitSdkWrapper enableRemoteConfig];
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
- (nonnull NSString *)getString:(nonnull NSString *)key {
|
|
18
|
+
return [AppAmbitSdkWrapper getRemoteConfigStringWithKey:key];
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
- (NSNumber *)getBoolean:(NSString *)key {
|
|
22
|
+
return @([AppAmbitSdkWrapper getRemoteConfigBooleanWithKey:key]);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
- (NSNumber *)getLong:(NSString *)key {
|
|
26
|
+
return @([AppAmbitSdkWrapper getRemoteConfigLongWithKey:key]);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
- (NSNumber *)getDouble:(NSString *)key {
|
|
30
|
+
return @([AppAmbitSdkWrapper getRemoteConfigDoubleWithKey:key]);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Foundation
|
|
2
|
-
import
|
|
2
|
+
import AppAmbit
|
|
3
3
|
|
|
4
4
|
@objc(AppAmbitSdkWrapper)
|
|
5
5
|
public class AppAmbitSDKWrapper: NSObject {
|
|
@@ -82,4 +82,50 @@ public class AppAmbitSDKWrapper: NSObject {
|
|
|
82
82
|
Crashes.logError(exception: exception, properties: properties)
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
+
// MARK: - RemoteConfig
|
|
86
|
+
@objc
|
|
87
|
+
public static func enableRemoteConfig() {
|
|
88
|
+
RemoteConfig.enable()
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
@objc
|
|
92
|
+
public static func getRemoteConfigString(key: String) -> String {
|
|
93
|
+
return RemoteConfig.getString(key)
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
@objc
|
|
97
|
+
public static func getRemoteConfigBoolean(key: String) -> Bool {
|
|
98
|
+
return RemoteConfig.getBoolean(key)
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
@objc
|
|
102
|
+
public static func getRemoteConfigLong(key: String) -> Int64 {
|
|
103
|
+
return RemoteConfig.getLong(key)
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
@objc
|
|
107
|
+
public static func getRemoteConfigDouble(key: String) -> Double {
|
|
108
|
+
return RemoteConfig.getDouble(key)
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// MARK: - CMS
|
|
112
|
+
@objc
|
|
113
|
+
public static func clearCmsCache(contentType: String) {
|
|
114
|
+
Task {
|
|
115
|
+
await Cms.clearCache(contentType)
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
@objc
|
|
120
|
+
public static func clearAllCmsCache() {
|
|
121
|
+
Task {
|
|
122
|
+
await Cms.clearAllCache()
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
@objc
|
|
127
|
+
public static func getCmsQuery(contentType: String) -> CmsQueryObjC {
|
|
128
|
+
return Cms.contentTypelessObjC(contentType)
|
|
129
|
+
}
|
|
130
|
+
|
|
85
131
|
}
|
package/ios/Appambit.h
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "appambit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Lightweight SDK for analytics, events, logging, crashes, and offline support. Simple setup, minimal overhead.",
|
|
5
5
|
"main": "./lib/module/index.js",
|
|
6
6
|
"types": "./lib/typescript/src/index.d.ts",
|
package/src/CmsQuery.ts
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import NativeAppambitCms from './NativeAppambitCms';
|
|
2
|
+
|
|
3
|
+
export class CmsQuery {
|
|
4
|
+
private contentType: string;
|
|
5
|
+
private filters: any[] = [];
|
|
6
|
+
|
|
7
|
+
constructor(contentType: string) {
|
|
8
|
+
this.contentType = contentType;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
private addFilter(field: string, operator: string, value: any) {
|
|
12
|
+
this.filters.push({ field, operator, value });
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
search(query: string): this {
|
|
16
|
+
this.filters.push({ method: 'search', args: [query] });
|
|
17
|
+
return this;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
equals(field: string, value: string): this {
|
|
21
|
+
this.addFilter(field, '=', value);
|
|
22
|
+
return this;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
notEquals(field: string, value: string): this {
|
|
26
|
+
this.addFilter(field, '!=', value);
|
|
27
|
+
return this;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
contains(field: string, value: string): this {
|
|
31
|
+
this.addFilter(field, 'LIKE', value);
|
|
32
|
+
return this;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
startsWith(field: string, value: string): this {
|
|
36
|
+
this.filters.push({ method: 'startsWith', args: [field, value] });
|
|
37
|
+
return this;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
greaterThan(field: string, value: number): this {
|
|
41
|
+
this.addFilter(field, '>', value);
|
|
42
|
+
return this;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
greaterThanOrEqual(field: string, value: number): this {
|
|
46
|
+
this.addFilter(field, '>=', value);
|
|
47
|
+
return this;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
lessThan(field: string, value: number): this {
|
|
51
|
+
this.addFilter(field, '<', value);
|
|
52
|
+
return this;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
lessThanOrEqual(field: string, value: number): this {
|
|
56
|
+
this.addFilter(field, '<=', value);
|
|
57
|
+
return this;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
inList(field: string, values: string[]): this {
|
|
61
|
+
this.filters.push({ method: 'inList', args: [field, values] });
|
|
62
|
+
return this;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
notInList(field: string, values: string[]): this {
|
|
66
|
+
this.filters.push({ method: 'notInList', args: [field, values] });
|
|
67
|
+
return this;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
orderByAscending(field: string): this {
|
|
71
|
+
this.filters.push({ method: 'orderByAscending', args: [field] });
|
|
72
|
+
return this;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
orderByDescending(field: string): this {
|
|
76
|
+
this.filters.push({ method: 'orderByDescending', args: [field] });
|
|
77
|
+
return this;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
getPage(page: number): this {
|
|
81
|
+
this.filters.push({ method: 'getPage', args: [page] });
|
|
82
|
+
return this;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
getPerPage(perPage: number): this {
|
|
86
|
+
this.filters.push({ method: 'getPerPage', args: [perPage] });
|
|
87
|
+
return this;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
async getList(): Promise<any[]> {
|
|
91
|
+
const hasPagination = this.filters.some(f => f.method === 'getPage' || f.method === 'getPerPage');
|
|
92
|
+
const finalFilters = hasPagination
|
|
93
|
+
? this.filters
|
|
94
|
+
: [...this.filters, { method: 'getPerPage', args: [-1] }];
|
|
95
|
+
|
|
96
|
+
return NativeAppambitCms.getList(this.contentType, finalFilters);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export class Cms {
|
|
101
|
+
content(contentType: string): CmsQuery {
|
|
102
|
+
return new CmsQuery(contentType);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
clearCache(contentType: string): void {
|
|
106
|
+
NativeAppambitCms.clearCache(contentType);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
clearAllCache(): void {
|
|
110
|
+
NativeAppambitCms.clearAllCache();
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
export const AppAmbitCms = new Cms();
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { TurboModuleRegistry, type TurboModule } from 'react-native';
|
|
2
|
+
|
|
3
|
+
export interface Spec extends TurboModule {
|
|
4
|
+
getList(contentType: string, filters: Object[]): Promise<any[]>;
|
|
5
|
+
clearCache(contentType: string): void;
|
|
6
|
+
clearAllCache(): void;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export default TurboModuleRegistry.getEnforcing<Spec>('AppAmbitCms');
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { TurboModuleRegistry, type TurboModule } from 'react-native';
|
|
2
|
+
|
|
3
|
+
export interface Spec extends TurboModule {
|
|
4
|
+
enable(): void;
|
|
5
|
+
getString(key: string): string;
|
|
6
|
+
getBoolean(key: string): boolean;
|
|
7
|
+
getLong(key: string): number;
|
|
8
|
+
getDouble(key: string): number;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export default TurboModuleRegistry.getEnforcing<Spec>('AppAmbitRemoteConfig');
|
package/src/index.tsx
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import Appambit from './NativeAppambitCore';
|
|
2
2
|
import AppambitAnalytics from './NativeAppambitAnalytics';
|
|
3
3
|
import AppambitCrashes from './NativeAppambitCrashes';
|
|
4
|
+
import AppambitRemoteConfig from './NativeAppambitRemoteConfig';
|
|
5
|
+
import { AppAmbitCms } from './CmsQuery';
|
|
4
6
|
import type { NavigationContainerRefWithCurrent } from '@react-navigation/native';
|
|
5
7
|
import { Platform } from 'react-native';
|
|
6
8
|
|
|
@@ -23,6 +25,11 @@ export function registerNavigationTracking(
|
|
|
23
25
|
|
|
24
26
|
let lastTrackedKey: string | null = null;
|
|
25
27
|
let lastTrackedName: string | null = null;
|
|
28
|
+
let isInitializing = true;
|
|
29
|
+
|
|
30
|
+
setTimeout(() => {
|
|
31
|
+
isInitializing = false;
|
|
32
|
+
}, 2500);
|
|
26
33
|
|
|
27
34
|
const onStateChange = () => {
|
|
28
35
|
if (!navigationRef.isReady()) return;
|
|
@@ -30,16 +37,28 @@ export function registerNavigationTracking(
|
|
|
30
37
|
const route = navigationRef.getCurrentRoute();
|
|
31
38
|
if (!route || route.key === lastTrackedKey) return;
|
|
32
39
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
addBreadcrumb(`On appear: ${route.name}`);
|
|
40
|
+
const currentName = route.name;
|
|
41
|
+
const prevName = lastTrackedName;
|
|
38
42
|
|
|
39
43
|
lastTrackedKey = route.key;
|
|
40
|
-
lastTrackedName =
|
|
44
|
+
lastTrackedName = currentName;
|
|
45
|
+
|
|
46
|
+
const sendBreadcrumbs = () => {
|
|
47
|
+
if (prevName) {
|
|
48
|
+
addBreadcrumb(`On disappear: ${prevName}`);
|
|
49
|
+
}
|
|
50
|
+
addBreadcrumb(`On appear: ${currentName}`);
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
if (isInitializing) {
|
|
54
|
+
setTimeout(sendBreadcrumbs, 3000);
|
|
55
|
+
} else {
|
|
56
|
+
sendBreadcrumbs();
|
|
57
|
+
}
|
|
41
58
|
};
|
|
42
59
|
|
|
60
|
+
onStateChange();
|
|
61
|
+
|
|
43
62
|
return navigationRef.addListener("state", onStateChange);
|
|
44
63
|
}
|
|
45
64
|
|
|
@@ -99,6 +118,34 @@ export function generateTestCrash(): void {
|
|
|
99
118
|
AppambitCrashes.generateTestCrash();
|
|
100
119
|
}
|
|
101
120
|
|
|
121
|
+
// RemoteConfig methods
|
|
122
|
+
|
|
123
|
+
export function enableConfig(): void {
|
|
124
|
+
AppambitRemoteConfig.enable();
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export function getString(key: string): string {
|
|
128
|
+
return AppambitRemoteConfig.getString(key);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export function getBoolean(key: string): boolean {
|
|
132
|
+
return AppambitRemoteConfig.getBoolean(key);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export function getLong(key: string): number {
|
|
136
|
+
return AppambitRemoteConfig.getLong(key);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
export function getDouble(key: string): number {
|
|
140
|
+
return AppambitRemoteConfig.getDouble(key);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
export { AppAmbitCms };
|
|
144
|
+
|
|
145
|
+
export function cms() {
|
|
146
|
+
return AppAmbitCms;
|
|
147
|
+
}
|
|
148
|
+
|
|
102
149
|
export function logErrorMessage(message: string, properties?: Record<string, string>): void {
|
|
103
150
|
AppambitCrashes.logErrorMessage(message, properties);
|
|
104
151
|
}
|
|
@@ -121,15 +168,15 @@ export async function logError({
|
|
|
121
168
|
message && message.length > 0
|
|
122
169
|
? message
|
|
123
170
|
: exception
|
|
124
|
-
|
|
125
|
-
|
|
171
|
+
? exception.message || JSON.stringify(exception)
|
|
172
|
+
: "UnknownError";
|
|
126
173
|
|
|
127
174
|
const stackStr =
|
|
128
175
|
stack && stack.length > 0
|
|
129
176
|
? stack
|
|
130
177
|
: exception?.stack
|
|
131
|
-
|
|
132
|
-
|
|
178
|
+
? exception.stack.toString()
|
|
179
|
+
: new Error().stack?.toString();
|
|
133
180
|
|
|
134
181
|
const payload: Record<string, any> = {};
|
|
135
182
|
|
|
@@ -139,7 +186,7 @@ export async function logError({
|
|
|
139
186
|
payload.properties = properties;
|
|
140
187
|
if (classFqn) payload.classFqn = classFqn;
|
|
141
188
|
if (fileName) payload.fileName = fileName;
|
|
142
|
-
|
|
189
|
+
|
|
143
190
|
if (typeof lineNumber === 'number' && !isNaN(lineNumber) && isFinite(lineNumber)) {
|
|
144
191
|
payload.lineNumber = lineNumber;
|
|
145
192
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeAppambitAnalytics.ts"],"mappings":";;AAAA,SAASA,mBAAmB,QAA0B,cAAc;AAapE,eAAeA,mBAAmB,CAACC,YAAY,CAAO,mBAAmB,CAAC","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeAppambitCore.ts"],"mappings":";;AAAA,SAASA,mBAAmB,QAA0B,cAAc;AAOpE,eAAeA,mBAAmB,CAACC,YAAY,CAAO,cAAc,CAAC","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeAppambitCrashes.ts"],"mappings":";;AAAA,SAASA,mBAAmB,QAA0B,cAAc;AAsBpE,eAAeA,mBAAmB,CAACC,YAAY,CAAO,iBAAiB,CAAC","ignoreList":[]}
|
package/lib/module/index.js
DELETED
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import Appambit from "./NativeAppambitCore.js";
|
|
4
|
-
import AppambitAnalytics from "./NativeAppambitAnalytics.js";
|
|
5
|
-
import AppambitCrashes from "./NativeAppambitCrashes.js";
|
|
6
|
-
import { Platform } from 'react-native';
|
|
7
|
-
export function registerNavigationTracking(navigationRef) {
|
|
8
|
-
if (Platform.OS !== 'android') {
|
|
9
|
-
return () => {};
|
|
10
|
-
}
|
|
11
|
-
let lastTrackedKey = null;
|
|
12
|
-
let lastTrackedName = null;
|
|
13
|
-
const onStateChange = () => {
|
|
14
|
-
if (!navigationRef.isReady()) return;
|
|
15
|
-
const route = navigationRef.getCurrentRoute();
|
|
16
|
-
if (!route || route.key === lastTrackedKey) return;
|
|
17
|
-
if (lastTrackedName) {
|
|
18
|
-
addBreadcrumb(`On disappear: ${lastTrackedName}`);
|
|
19
|
-
}
|
|
20
|
-
addBreadcrumb(`On appear: ${route.name}`);
|
|
21
|
-
lastTrackedKey = route.key;
|
|
22
|
-
lastTrackedName = route.name;
|
|
23
|
-
};
|
|
24
|
-
return navigationRef.addListener("state", onStateChange);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
// Start the Appambit SDK with the provided app key
|
|
28
|
-
|
|
29
|
-
export function start(appkey) {
|
|
30
|
-
Appambit.start(appkey);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// Breadcrumbs
|
|
34
|
-
|
|
35
|
-
export function addBreadcrumb(name) {
|
|
36
|
-
Appambit.addBreadcrumb(name);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
// Analytics methods
|
|
40
|
-
|
|
41
|
-
export function setUserId(userId) {
|
|
42
|
-
AppambitAnalytics.setUserId(userId);
|
|
43
|
-
}
|
|
44
|
-
export function setUserEmail(userEmail) {
|
|
45
|
-
AppambitAnalytics.setUserEmail(userEmail);
|
|
46
|
-
}
|
|
47
|
-
export function clearToken() {
|
|
48
|
-
AppambitAnalytics.clearToken();
|
|
49
|
-
}
|
|
50
|
-
export function startSession() {
|
|
51
|
-
AppambitAnalytics.startSession();
|
|
52
|
-
}
|
|
53
|
-
export function endSession() {
|
|
54
|
-
AppambitAnalytics.endSession();
|
|
55
|
-
}
|
|
56
|
-
export function enableManualSession() {
|
|
57
|
-
AppambitAnalytics.enableManualSession();
|
|
58
|
-
}
|
|
59
|
-
export function trackEvent(eventTitle, properties) {
|
|
60
|
-
AppambitAnalytics.trackEvent(eventTitle, properties);
|
|
61
|
-
}
|
|
62
|
-
export function generateTestEvent() {
|
|
63
|
-
AppambitAnalytics.generateTestEvent();
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// Crashes methods
|
|
67
|
-
|
|
68
|
-
export function didCrashInLastSession() {
|
|
69
|
-
return AppambitCrashes.didCrashInLastSession();
|
|
70
|
-
}
|
|
71
|
-
export function generateTestCrash() {
|
|
72
|
-
AppambitCrashes.generateTestCrash();
|
|
73
|
-
}
|
|
74
|
-
export function logErrorMessage(message, properties) {
|
|
75
|
-
AppambitCrashes.logErrorMessage(message, properties);
|
|
76
|
-
}
|
|
77
|
-
export async function logError({
|
|
78
|
-
message,
|
|
79
|
-
exception,
|
|
80
|
-
stack,
|
|
81
|
-
classFqn,
|
|
82
|
-
fileName,
|
|
83
|
-
lineNumber,
|
|
84
|
-
properties
|
|
85
|
-
}) {
|
|
86
|
-
if (!AppambitCrashes) {
|
|
87
|
-
console.warn('AppAmbitCrashes not registered');
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
const messageStr = message && message.length > 0 ? message : exception ? exception.message || JSON.stringify(exception) : "UnknownError";
|
|
91
|
-
const stackStr = stack && stack.length > 0 ? stack : exception?.stack ? exception.stack.toString() : new Error().stack?.toString();
|
|
92
|
-
const payload = {};
|
|
93
|
-
if (messageStr) payload.message = messageStr;
|
|
94
|
-
if (stackStr) payload.stack = stackStr;
|
|
95
|
-
if (properties && Object.keys(properties).length > 0) payload.properties = properties;
|
|
96
|
-
if (classFqn) payload.classFqn = classFqn;
|
|
97
|
-
if (fileName) payload.fileName = fileName;
|
|
98
|
-
if (typeof lineNumber === 'number' && !isNaN(lineNumber) && isFinite(lineNumber)) {
|
|
99
|
-
payload.lineNumber = lineNumber;
|
|
100
|
-
}
|
|
101
|
-
if (Object.keys(payload).length === 0) return;
|
|
102
|
-
const userProvidedMessage = !!message && message.length > 0;
|
|
103
|
-
if (userProvidedMessage) {
|
|
104
|
-
AppambitCrashes.logErrorMessage(message, properties);
|
|
105
|
-
} else if (exception || stackStr && stackStr.length > 0) {
|
|
106
|
-
AppambitCrashes.logError(payload);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
ErrorUtils.setGlobalHandler(error => {
|
|
110
|
-
const hasMessage = typeof error?.message === "string" && error.message.trim().length > 0;
|
|
111
|
-
if (hasMessage) {
|
|
112
|
-
logError({
|
|
113
|
-
exception: error,
|
|
114
|
-
message: error.message,
|
|
115
|
-
stack: error.stack,
|
|
116
|
-
classFqn: error.constructor?.name
|
|
117
|
-
});
|
|
118
|
-
} else {
|
|
119
|
-
logError({
|
|
120
|
-
exception: error,
|
|
121
|
-
stack: error.stack,
|
|
122
|
-
classFqn: error.constructor?.name
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
});
|
|
126
|
-
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["Appambit","AppambitAnalytics","AppambitCrashes","Platform","registerNavigationTracking","navigationRef","OS","lastTrackedKey","lastTrackedName","onStateChange","isReady","route","getCurrentRoute","key","addBreadcrumb","name","addListener","start","appkey","setUserId","userId","setUserEmail","userEmail","clearToken","startSession","endSession","enableManualSession","trackEvent","eventTitle","properties","generateTestEvent","didCrashInLastSession","generateTestCrash","logErrorMessage","message","logError","exception","stack","classFqn","fileName","lineNumber","console","warn","messageStr","length","JSON","stringify","stackStr","toString","Error","payload","Object","keys","isNaN","isFinite","userProvidedMessage","ErrorUtils","setGlobalHandler","error","hasMessage","trim","constructor"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
|
package/lib/module/package.json
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"type":"module"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../../../appambit_test_app/src/App.tsx"],"names":[],"mappings":"AA4CA,MAAM,CAAC,OAAO,UAAU,GAAG,4CAmB1B"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { type GestureResponderEvent } from "react-native";
|
|
2
|
-
interface Props {
|
|
3
|
-
title: string;
|
|
4
|
-
onPress: (event: GestureResponderEvent) => void;
|
|
5
|
-
}
|
|
6
|
-
export default function CustomButton({ title, onPress }: Props): import("react/jsx-runtime").JSX.Element;
|
|
7
|
-
export {};
|
|
8
|
-
//# sourceMappingURL=CustomButton.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CustomButton.d.ts","sourceRoot":"","sources":["../../../../../appambit_test_app/src/components/CustomButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAEvF,UAAU,KAAK;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;CACjD;AAED,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,2CAM7D"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
interface CustomInputProps {
|
|
3
|
-
placeholder: string;
|
|
4
|
-
buttonLabel: string;
|
|
5
|
-
defaultValue: string;
|
|
6
|
-
onSubmit: (value: string) => void;
|
|
7
|
-
}
|
|
8
|
-
declare const CustomInput: React.FC<CustomInputProps>;
|
|
9
|
-
export default CustomInput;
|
|
10
|
-
//# sourceMappingURL=CustomInput.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CustomInput.d.ts","sourceRoot":"","sources":["../../../../../appambit_test_app/src/components/CustomInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAIxC,UAAU,gBAAgB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAc3C,CAAC;AAmBF,eAAe,WAAW,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AnalyticsScreen.d.ts","sourceRoot":"","sources":["../../../../../appambit_test_app/src/screens/AnalyticsScreen.tsx"],"names":[],"mappings":"AAKA,MAAM,CAAC,OAAO,UAAU,eAAe,4CAgItC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CrashesScreen.d.ts","sourceRoot":"","sources":["../../../../../appambit_test_app/src/screens/CrashesScreen.tsx"],"names":[],"mappings":"AAeA,MAAM,CAAC,OAAO,UAAU,aAAa,4CAwEpC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { type NativeStackScreenProps } from "@react-navigation/native-stack";
|
|
2
|
-
type RootStackParamList = {
|
|
3
|
-
HomeScreen: undefined;
|
|
4
|
-
SecondScreen: undefined;
|
|
5
|
-
};
|
|
6
|
-
type Props = NativeStackScreenProps<RootStackParamList, "SecondScreen">;
|
|
7
|
-
export default function SecondScreen({ navigation }: Props): import("react/jsx-runtime").JSX.Element;
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=SecondScreen.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SecondScreen.d.ts","sourceRoot":"","sources":["../../../../../appambit_test_app/src/screens/SecondScreen.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAE7E,KAAK,kBAAkB,GAAG;IACxB,UAAU,EAAE,SAAS,CAAC;IACtB,YAAY,EAAE,SAAS,CAAC;CACzB,CAAC;AAEF,KAAK,KAAK,GAAG,sBAAsB,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;AAExE,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,UAAU,EAAE,EAAE,KAAK,2CAazD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uuid.d.ts","sourceRoot":"","sources":["../../../../../appambit_test_app/src/utils/uuid.tsx"],"names":[],"mappings":"AAAA,wBAAgB,MAAM,IAAI,MAAM,CAM/B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"type":"module"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { type TurboModule } from 'react-native';
|
|
2
|
-
export interface Spec extends TurboModule {
|
|
3
|
-
setUserId(userId: string): void;
|
|
4
|
-
setUserEmail(email: string): void;
|
|
5
|
-
clearToken(): void;
|
|
6
|
-
startSession(): void;
|
|
7
|
-
endSession(): void;
|
|
8
|
-
enableManualSession(): void;
|
|
9
|
-
trackEvent(eventTitle: string, properties?: Object): void;
|
|
10
|
-
generateTestEvent(): void;
|
|
11
|
-
}
|
|
12
|
-
declare const _default: Spec;
|
|
13
|
-
export default _default;
|
|
14
|
-
//# sourceMappingURL=NativeAppambitAnalytics.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NativeAppambitAnalytics.d.ts","sourceRoot":"","sources":["../../../src/NativeAppambitAnalytics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAErE,MAAM,WAAW,IAAK,SAAQ,WAAW;IACrC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,UAAU,IAAI,IAAI,CAAC;IACnB,YAAY,IAAI,IAAI,CAAC;IACrB,UAAU,IAAI,IAAI,CAAC;IACnB,mBAAmB,IAAI,IAAI,CAAC;IAC5B,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1D,iBAAiB,IAAI,IAAI,CAAC;CAC7B;;AAED,wBAA2E"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { type TurboModule } from 'react-native';
|
|
2
|
-
export interface Spec extends TurboModule {
|
|
3
|
-
start(appkey: string): void;
|
|
4
|
-
addBreadcrumb(name: string): void;
|
|
5
|
-
}
|
|
6
|
-
declare const _default: Spec;
|
|
7
|
-
export default _default;
|
|
8
|
-
//# sourceMappingURL=NativeAppambitCore.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NativeAppambitCore.d.ts","sourceRoot":"","sources":["../../../src/NativeAppambitCore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAErE,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;;AAED,wBAAsE"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { type TurboModule } from 'react-native';
|
|
2
|
-
export interface Spec extends TurboModule {
|
|
3
|
-
generateTestCrash(): void;
|
|
4
|
-
didCrashInLastSession(): Promise<boolean>;
|
|
5
|
-
logErrorMessage(message: string, properties?: {
|
|
6
|
-
[key: string]: string;
|
|
7
|
-
}): void;
|
|
8
|
-
logError(payload: ErrorPayload): void;
|
|
9
|
-
}
|
|
10
|
-
interface ErrorPayload {
|
|
11
|
-
exception?: Object;
|
|
12
|
-
message?: string;
|
|
13
|
-
stack?: string;
|
|
14
|
-
classFqn?: string;
|
|
15
|
-
fileName?: string;
|
|
16
|
-
lineNumber?: number;
|
|
17
|
-
properties?: {
|
|
18
|
-
[key: string]: string;
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
declare const _default: Spec;
|
|
22
|
-
export default _default;
|
|
23
|
-
//# sourceMappingURL=NativeAppambitCrashes.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NativeAppambitCrashes.d.ts","sourceRoot":"","sources":["../../../src/NativeAppambitCrashes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAErE,MAAM,WAAW,IAAK,SAAQ,WAAW;IACrC,iBAAiB,IAAI,IAAI,CAAC;IAC1B,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,eAAe,CACX,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GACvC,IAAI,CAAC;IACR,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;CACzC;AAED,UAAU,YAAY;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACxC;;AAED,wBAAyE"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import type { NavigationContainerRefWithCurrent } from '@react-navigation/native';
|
|
2
|
-
type LogErrorParams = {
|
|
3
|
-
exception?: any;
|
|
4
|
-
message?: string;
|
|
5
|
-
stack?: string;
|
|
6
|
-
classFqn?: string;
|
|
7
|
-
fileName?: string;
|
|
8
|
-
lineNumber?: number;
|
|
9
|
-
properties?: Record<string, string>;
|
|
10
|
-
};
|
|
11
|
-
export declare function registerNavigationTracking(navigationRef: NavigationContainerRefWithCurrent<any>): () => void;
|
|
12
|
-
export declare function start(appkey: string): void;
|
|
13
|
-
export declare function addBreadcrumb(name: string): void;
|
|
14
|
-
export declare function setUserId(userId: string): void;
|
|
15
|
-
export declare function setUserEmail(userEmail: string): void;
|
|
16
|
-
export declare function clearToken(): void;
|
|
17
|
-
export declare function startSession(): void;
|
|
18
|
-
export declare function endSession(): void;
|
|
19
|
-
export declare function enableManualSession(): void;
|
|
20
|
-
export declare function trackEvent(eventTitle: string, properties?: Record<string, string>): void;
|
|
21
|
-
export declare function generateTestEvent(): void;
|
|
22
|
-
export declare function didCrashInLastSession(): Promise<boolean>;
|
|
23
|
-
export declare function generateTestCrash(): void;
|
|
24
|
-
export declare function logErrorMessage(message: string, properties?: Record<string, string>): void;
|
|
25
|
-
export declare function logError({ message, exception, stack, classFqn, fileName, lineNumber, properties, }: LogErrorParams): Promise<void>;
|
|
26
|
-
export {};
|
|
27
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,0BAA0B,CAAC;AAGlF,KAAK,cAAc,GAAG;IACpB,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC,CAAC;AAEF,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,iCAAiC,CAAC,GAAG,CAAC,cA0BtD;AAID,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE1C;AAID,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEhD;AAID,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED,wBAAgB,YAAY,IAAI,IAAI,CAEnC;AAED,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAExF;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAID,wBAAgB,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC,CAExD;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAE1F;AAED,wBAAsB,QAAQ,CAAC,EAC7B,OAAO,EACP,SAAS,EACT,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,UAAU,GACX,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA0ChC"}
|