reteno-react-native-sdk 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/LICENSE +20 -0
- package/README.md +22 -0
- package/android/build.gradle +87 -0
- package/android/gradle.properties +5 -0
- package/android/src/main/AndroidManifest.xml +17 -0
- package/android/src/main/java/com/retenosdk/RetenoPushReceiver.java +12 -0
- package/android/src/main/java/com/retenosdk/RetenoReactNativeApplication.java +7 -0
- package/android/src/main/java/com/retenosdk/RetenoSdkModule.java +129 -0
- package/android/src/main/java/com/retenosdk/RetenoSdkPackage.java +28 -0
- package/android/src/main/java/com/retenosdk/RetenoUserAttributes.java +127 -0
- package/ios/EventEmitter.swift +29 -0
- package/ios/RetenoSdk-Bridging-Header.h +3 -0
- package/ios/RetenoSdk.m +24 -0
- package/ios/RetenoSdk.swift +64 -0
- package/ios/RetenoSdk.xcodeproj/project.pbxproj +285 -0
- package/ios/RetenoUserAttributes.swift +127 -0
- package/lib/commonjs/index.js +40 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/module/index.js +31 -0
- package/lib/module/index.js.map +1 -0
- package/lib/typescript/index.d.ts +37 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/package.json +167 -0
- package/reteno-react-native-sdk.podspec +36 -0
- package/src/index.tsx +92 -0
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
// !$*UTF8*$!
|
|
2
|
+
{
|
|
3
|
+
archiveVersion = 1;
|
|
4
|
+
classes = {
|
|
5
|
+
};
|
|
6
|
+
objectVersion = 46;
|
|
7
|
+
objects = {
|
|
8
|
+
|
|
9
|
+
/* Begin PBXBuildFile section */
|
|
10
|
+
F4FF95D7245B92E800C19C63 /* RetenoSdk.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4FF95D6245B92E800C19C63 /* RetenoSdk.swift */; };
|
|
11
|
+
/* End PBXBuildFile section */
|
|
12
|
+
|
|
13
|
+
/* Begin PBXCopyFilesBuildPhase section */
|
|
14
|
+
58B511D91A9E6C8500147676 /* CopyFiles */ = {
|
|
15
|
+
isa = PBXCopyFilesBuildPhase;
|
|
16
|
+
buildActionMask = 2147483647;
|
|
17
|
+
dstPath = "include/$(PRODUCT_NAME)";
|
|
18
|
+
dstSubfolderSpec = 16;
|
|
19
|
+
files = (
|
|
20
|
+
);
|
|
21
|
+
runOnlyForDeploymentPostprocessing = 0;
|
|
22
|
+
};
|
|
23
|
+
/* End PBXCopyFilesBuildPhase section */
|
|
24
|
+
|
|
25
|
+
/* Begin PBXFileReference section */
|
|
26
|
+
134814201AA4EA6300B7C361 /* libRetenoSdk.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRetenoSdk.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
27
|
+
1705822A2951B4DF00B65623 /* EventEmitter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EventEmitter.swift; sourceTree = "<group>"; };
|
|
28
|
+
17C9E39A2949EE030021AF59 /* RetenoUserAttributes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RetenoUserAttributes.swift; sourceTree = "<group>"; };
|
|
29
|
+
B3E7B5891CC2AC0600A0062D /* RetenoSdk.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RetenoSdk.m; sourceTree = "<group>"; };
|
|
30
|
+
F4FF95D5245B92E700C19C63 /* RetenoSdk-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "RetenoSdk-Bridging-Header.h"; sourceTree = "<group>"; };
|
|
31
|
+
F4FF95D6245B92E800C19C63 /* RetenoSdk.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RetenoSdk.swift; sourceTree = "<group>"; };
|
|
32
|
+
/* End PBXFileReference section */
|
|
33
|
+
|
|
34
|
+
/* Begin PBXFrameworksBuildPhase section */
|
|
35
|
+
58B511D81A9E6C8500147676 /* Frameworks */ = {
|
|
36
|
+
isa = PBXFrameworksBuildPhase;
|
|
37
|
+
buildActionMask = 2147483647;
|
|
38
|
+
files = (
|
|
39
|
+
);
|
|
40
|
+
runOnlyForDeploymentPostprocessing = 0;
|
|
41
|
+
};
|
|
42
|
+
/* End PBXFrameworksBuildPhase section */
|
|
43
|
+
|
|
44
|
+
/* Begin PBXGroup section */
|
|
45
|
+
134814211AA4EA7D00B7C361 /* Products */ = {
|
|
46
|
+
isa = PBXGroup;
|
|
47
|
+
children = (
|
|
48
|
+
134814201AA4EA6300B7C361 /* libRetenoSdk.a */,
|
|
49
|
+
);
|
|
50
|
+
name = Products;
|
|
51
|
+
sourceTree = "<group>";
|
|
52
|
+
};
|
|
53
|
+
58B511D21A9E6C8500147676 = {
|
|
54
|
+
isa = PBXGroup;
|
|
55
|
+
children = (
|
|
56
|
+
1705822A2951B4DF00B65623 /* EventEmitter.swift */,
|
|
57
|
+
17C9E39A2949EE030021AF59 /* RetenoUserAttributes.swift */,
|
|
58
|
+
F4FF95D6245B92E800C19C63 /* RetenoSdk.swift */,
|
|
59
|
+
B3E7B5891CC2AC0600A0062D /* RetenoSdk.m */,
|
|
60
|
+
F4FF95D5245B92E700C19C63 /* RetenoSdk-Bridging-Header.h */,
|
|
61
|
+
134814211AA4EA7D00B7C361 /* Products */,
|
|
62
|
+
);
|
|
63
|
+
sourceTree = "<group>";
|
|
64
|
+
};
|
|
65
|
+
/* End PBXGroup section */
|
|
66
|
+
|
|
67
|
+
/* Begin PBXNativeTarget section */
|
|
68
|
+
58B511DA1A9E6C8500147676 /* RetenoSdk */ = {
|
|
69
|
+
isa = PBXNativeTarget;
|
|
70
|
+
buildConfigurationList = 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "RetenoSdk" */;
|
|
71
|
+
buildPhases = (
|
|
72
|
+
58B511D71A9E6C8500147676 /* Sources */,
|
|
73
|
+
58B511D81A9E6C8500147676 /* Frameworks */,
|
|
74
|
+
58B511D91A9E6C8500147676 /* CopyFiles */,
|
|
75
|
+
);
|
|
76
|
+
buildRules = (
|
|
77
|
+
);
|
|
78
|
+
dependencies = (
|
|
79
|
+
);
|
|
80
|
+
name = RetenoSdk;
|
|
81
|
+
productName = RCTDataManager;
|
|
82
|
+
productReference = 134814201AA4EA6300B7C361 /* libRetenoSdk.a */;
|
|
83
|
+
productType = "com.apple.product-type.library.static";
|
|
84
|
+
};
|
|
85
|
+
/* End PBXNativeTarget section */
|
|
86
|
+
|
|
87
|
+
/* Begin PBXProject section */
|
|
88
|
+
58B511D31A9E6C8500147676 /* Project object */ = {
|
|
89
|
+
isa = PBXProject;
|
|
90
|
+
attributes = {
|
|
91
|
+
LastUpgradeCheck = 0920;
|
|
92
|
+
ORGANIZATIONNAME = Facebook;
|
|
93
|
+
TargetAttributes = {
|
|
94
|
+
58B511DA1A9E6C8500147676 = {
|
|
95
|
+
CreatedOnToolsVersion = 6.1.1;
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
buildConfigurationList = 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "RetenoSdk" */;
|
|
100
|
+
compatibilityVersion = "Xcode 3.2";
|
|
101
|
+
developmentRegion = English;
|
|
102
|
+
hasScannedForEncodings = 0;
|
|
103
|
+
knownRegions = (
|
|
104
|
+
English,
|
|
105
|
+
en,
|
|
106
|
+
);
|
|
107
|
+
mainGroup = 58B511D21A9E6C8500147676;
|
|
108
|
+
productRefGroup = 58B511D21A9E6C8500147676;
|
|
109
|
+
projectDirPath = "";
|
|
110
|
+
projectRoot = "";
|
|
111
|
+
targets = (
|
|
112
|
+
58B511DA1A9E6C8500147676 /* RetenoSdk */,
|
|
113
|
+
);
|
|
114
|
+
};
|
|
115
|
+
/* End PBXProject section */
|
|
116
|
+
|
|
117
|
+
/* Begin PBXSourcesBuildPhase section */
|
|
118
|
+
58B511D71A9E6C8500147676 /* Sources */ = {
|
|
119
|
+
isa = PBXSourcesBuildPhase;
|
|
120
|
+
buildActionMask = 2147483647;
|
|
121
|
+
files = (
|
|
122
|
+
F4FF95D7245B92E800C19C63 /* RetenoSdk.swift in Sources */,
|
|
123
|
+
);
|
|
124
|
+
runOnlyForDeploymentPostprocessing = 0;
|
|
125
|
+
};
|
|
126
|
+
/* End PBXSourcesBuildPhase section */
|
|
127
|
+
|
|
128
|
+
/* Begin XCBuildConfiguration section */
|
|
129
|
+
58B511ED1A9E6C8500147676 /* Debug */ = {
|
|
130
|
+
isa = XCBuildConfiguration;
|
|
131
|
+
buildSettings = {
|
|
132
|
+
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
133
|
+
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
|
134
|
+
CLANG_CXX_LIBRARY = "libc++";
|
|
135
|
+
CLANG_ENABLE_MODULES = YES;
|
|
136
|
+
CLANG_ENABLE_OBJC_ARC = YES;
|
|
137
|
+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
138
|
+
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
139
|
+
CLANG_WARN_COMMA = YES;
|
|
140
|
+
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
141
|
+
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
142
|
+
CLANG_WARN_EMPTY_BODY = YES;
|
|
143
|
+
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
144
|
+
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
145
|
+
CLANG_WARN_INT_CONVERSION = YES;
|
|
146
|
+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
147
|
+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
148
|
+
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
149
|
+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
150
|
+
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
151
|
+
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
152
|
+
CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
153
|
+
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
154
|
+
COPY_PHASE_STRIP = NO;
|
|
155
|
+
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
156
|
+
ENABLE_TESTABILITY = YES;
|
|
157
|
+
"EXCLUDED_ARCHS[sdk=*]" = arm64;
|
|
158
|
+
GCC_C_LANGUAGE_STANDARD = gnu99;
|
|
159
|
+
GCC_DYNAMIC_NO_PIC = NO;
|
|
160
|
+
GCC_NO_COMMON_BLOCKS = YES;
|
|
161
|
+
GCC_OPTIMIZATION_LEVEL = 0;
|
|
162
|
+
GCC_PREPROCESSOR_DEFINITIONS = (
|
|
163
|
+
"DEBUG=1",
|
|
164
|
+
"$(inherited)",
|
|
165
|
+
);
|
|
166
|
+
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
|
167
|
+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
168
|
+
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
169
|
+
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
170
|
+
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
171
|
+
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
172
|
+
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
173
|
+
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
|
174
|
+
MTL_ENABLE_DEBUG_INFO = YES;
|
|
175
|
+
ONLY_ACTIVE_ARCH = YES;
|
|
176
|
+
SDKROOT = iphoneos;
|
|
177
|
+
};
|
|
178
|
+
name = Debug;
|
|
179
|
+
};
|
|
180
|
+
58B511EE1A9E6C8500147676 /* Release */ = {
|
|
181
|
+
isa = XCBuildConfiguration;
|
|
182
|
+
buildSettings = {
|
|
183
|
+
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
184
|
+
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
|
185
|
+
CLANG_CXX_LIBRARY = "libc++";
|
|
186
|
+
CLANG_ENABLE_MODULES = YES;
|
|
187
|
+
CLANG_ENABLE_OBJC_ARC = YES;
|
|
188
|
+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
189
|
+
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
190
|
+
CLANG_WARN_COMMA = YES;
|
|
191
|
+
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
192
|
+
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
193
|
+
CLANG_WARN_EMPTY_BODY = YES;
|
|
194
|
+
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
195
|
+
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
196
|
+
CLANG_WARN_INT_CONVERSION = YES;
|
|
197
|
+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
198
|
+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
199
|
+
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
200
|
+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
201
|
+
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
202
|
+
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
203
|
+
CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
204
|
+
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
205
|
+
COPY_PHASE_STRIP = YES;
|
|
206
|
+
ENABLE_NS_ASSERTIONS = NO;
|
|
207
|
+
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
208
|
+
"EXCLUDED_ARCHS[sdk=*]" = arm64;
|
|
209
|
+
GCC_C_LANGUAGE_STANDARD = gnu99;
|
|
210
|
+
GCC_NO_COMMON_BLOCKS = YES;
|
|
211
|
+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
212
|
+
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
213
|
+
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
214
|
+
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
215
|
+
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
216
|
+
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
217
|
+
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
|
218
|
+
MTL_ENABLE_DEBUG_INFO = NO;
|
|
219
|
+
SDKROOT = iphoneos;
|
|
220
|
+
VALIDATE_PRODUCT = YES;
|
|
221
|
+
};
|
|
222
|
+
name = Release;
|
|
223
|
+
};
|
|
224
|
+
58B511F01A9E6C8500147676 /* Debug */ = {
|
|
225
|
+
isa = XCBuildConfiguration;
|
|
226
|
+
buildSettings = {
|
|
227
|
+
HEADER_SEARCH_PATHS = (
|
|
228
|
+
"$(inherited)",
|
|
229
|
+
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
|
230
|
+
"$(SRCROOT)/../../../React/**",
|
|
231
|
+
"$(SRCROOT)/../../react-native/React/**",
|
|
232
|
+
);
|
|
233
|
+
LIBRARY_SEARCH_PATHS = "$(inherited)";
|
|
234
|
+
OTHER_LDFLAGS = "-ObjC";
|
|
235
|
+
PRODUCT_NAME = RetenoSdk;
|
|
236
|
+
SKIP_INSTALL = YES;
|
|
237
|
+
SWIFT_OBJC_BRIDGING_HEADER = "RetenoSdk-Bridging-Header.h";
|
|
238
|
+
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
|
239
|
+
SWIFT_VERSION = 5.0;
|
|
240
|
+
};
|
|
241
|
+
name = Debug;
|
|
242
|
+
};
|
|
243
|
+
58B511F11A9E6C8500147676 /* Release */ = {
|
|
244
|
+
isa = XCBuildConfiguration;
|
|
245
|
+
buildSettings = {
|
|
246
|
+
HEADER_SEARCH_PATHS = (
|
|
247
|
+
"$(inherited)",
|
|
248
|
+
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
|
249
|
+
"$(SRCROOT)/../../../React/**",
|
|
250
|
+
"$(SRCROOT)/../../react-native/React/**",
|
|
251
|
+
);
|
|
252
|
+
LIBRARY_SEARCH_PATHS = "$(inherited)";
|
|
253
|
+
OTHER_LDFLAGS = "-ObjC";
|
|
254
|
+
PRODUCT_NAME = RetenoSdk;
|
|
255
|
+
SKIP_INSTALL = YES;
|
|
256
|
+
SWIFT_OBJC_BRIDGING_HEADER = "RetenoSdk-Bridging-Header.h";
|
|
257
|
+
SWIFT_VERSION = 5.0;
|
|
258
|
+
};
|
|
259
|
+
name = Release;
|
|
260
|
+
};
|
|
261
|
+
/* End XCBuildConfiguration section */
|
|
262
|
+
|
|
263
|
+
/* Begin XCConfigurationList section */
|
|
264
|
+
58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "RetenoSdk" */ = {
|
|
265
|
+
isa = XCConfigurationList;
|
|
266
|
+
buildConfigurations = (
|
|
267
|
+
58B511ED1A9E6C8500147676 /* Debug */,
|
|
268
|
+
58B511EE1A9E6C8500147676 /* Release */,
|
|
269
|
+
);
|
|
270
|
+
defaultConfigurationIsVisible = 0;
|
|
271
|
+
defaultConfigurationName = Release;
|
|
272
|
+
};
|
|
273
|
+
58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "RetenoSdk" */ = {
|
|
274
|
+
isa = XCConfigurationList;
|
|
275
|
+
buildConfigurations = (
|
|
276
|
+
58B511F01A9E6C8500147676 /* Debug */,
|
|
277
|
+
58B511F11A9E6C8500147676 /* Release */,
|
|
278
|
+
);
|
|
279
|
+
defaultConfigurationIsVisible = 0;
|
|
280
|
+
defaultConfigurationName = Release;
|
|
281
|
+
};
|
|
282
|
+
/* End XCConfigurationList section */
|
|
283
|
+
};
|
|
284
|
+
rootObject = 58B511D31A9E6C8500147676 /* Project object */;
|
|
285
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RetenoUserAttributes.swift
|
|
3
|
+
// RetenoSdk
|
|
4
|
+
//
|
|
5
|
+
// Created by Valentyn Halkin on 14.12.2022.
|
|
6
|
+
// Copyright © 2022 Facebook. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
import Foundation
|
|
10
|
+
import Reteno
|
|
11
|
+
|
|
12
|
+
struct RetenoUserAttributesFieldStruct: Codable {
|
|
13
|
+
let key: String
|
|
14
|
+
let value: String
|
|
15
|
+
init(dictionary: [String: Any]) throws {
|
|
16
|
+
self = try JSONDecoder().decode(
|
|
17
|
+
RetenoUserAttributesFieldStruct.self,
|
|
18
|
+
from: JSONSerialization.data(withJSONObject: dictionary)
|
|
19
|
+
)
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
struct RetenoUserAttributesAddressStruct: Codable {
|
|
24
|
+
init(dictionary: [String: Any]) throws {
|
|
25
|
+
self = try JSONDecoder().decode(
|
|
26
|
+
RetenoUserAttributesAddressStruct.self,
|
|
27
|
+
from: JSONSerialization.data(withJSONObject: dictionary)
|
|
28
|
+
)
|
|
29
|
+
}
|
|
30
|
+
let region: String?
|
|
31
|
+
let town: String?
|
|
32
|
+
let address: String?
|
|
33
|
+
let postcode: String?
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
struct RetenoUserAttributesStruct: Codable {
|
|
37
|
+
init(dictionary: [String: Any]) throws {
|
|
38
|
+
self = try JSONDecoder().decode(
|
|
39
|
+
RetenoUserAttributesStruct.self,
|
|
40
|
+
from: JSONSerialization.data(withJSONObject: dictionary)
|
|
41
|
+
)
|
|
42
|
+
}
|
|
43
|
+
let phone: String?
|
|
44
|
+
let email: String?
|
|
45
|
+
let firstName: String?
|
|
46
|
+
let lastName: String?
|
|
47
|
+
let languageCode: String?
|
|
48
|
+
let timeZone: String?
|
|
49
|
+
let address: RetenoUserAttributesAddressStruct?
|
|
50
|
+
let fields: [RetenoUserAttributesFieldStruct]?
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
struct RetenoUserStruct: Codable {
|
|
54
|
+
init(dictionary: [String: Any]?) throws {
|
|
55
|
+
self = try JSONDecoder().decode(RetenoUserStruct.self, from: JSONSerialization.data(withJSONObject: dictionary ?? [:]))
|
|
56
|
+
}
|
|
57
|
+
let userAttributes: RetenoUserAttributesStruct?
|
|
58
|
+
let subscriptionKeys: [String]?
|
|
59
|
+
let groupNamesInclude: [String]?
|
|
60
|
+
let groupNamesExclude: [String]?
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
public struct RetenoSetUserAttributesPayload: Codable {
|
|
64
|
+
init(userAttributes: UserAttributes?, subscriptionKeys: [String], groupNamesInclude: [String], groupNamesExclude: [String]) {
|
|
65
|
+
self.userAttributes = userAttributes;
|
|
66
|
+
self.subscriptionKeys = subscriptionKeys;
|
|
67
|
+
self.groupNamesInclude = groupNamesInclude;
|
|
68
|
+
self.groupNamesExclude = groupNamesExclude;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
let userAttributes: UserAttributes?
|
|
72
|
+
let subscriptionKeys: [String]
|
|
73
|
+
let groupNamesInclude: [String]
|
|
74
|
+
let groupNamesExclude: [String]
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
public struct RetenoUserAttributes {
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
private init() {}
|
|
81
|
+
|
|
82
|
+
private static func getStringOrNil(input: String?) -> String? {
|
|
83
|
+
return (input ?? "").isEmpty ? nil : input!
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
private static func buildUserAttributes(userStruct: RetenoUserStruct) -> UserAttributes {
|
|
87
|
+
let fields = userStruct.userAttributes?.fields?.map { field in
|
|
88
|
+
UserCustomField(key: field.key, value: field.value)
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return UserAttributes(
|
|
92
|
+
phone: getStringOrNil(input: userStruct.userAttributes?.phone),
|
|
93
|
+
email: getStringOrNil(input: userStruct.userAttributes?.email),
|
|
94
|
+
firstName: getStringOrNil(input: userStruct.userAttributes?.firstName),
|
|
95
|
+
lastName: getStringOrNil(input: userStruct.userAttributes?.lastName),
|
|
96
|
+
languageCode: getStringOrNil(input: userStruct.userAttributes?.languageCode),
|
|
97
|
+
timeZone: getStringOrNil(input: userStruct.userAttributes?.timeZone),
|
|
98
|
+
address: userStruct.userAttributes?.address != nil ? Address(
|
|
99
|
+
region: getStringOrNil(input: userStruct.userAttributes?.address?.region),
|
|
100
|
+
town: getStringOrNil(input: userStruct.userAttributes?.address?.town),
|
|
101
|
+
address: getStringOrNil(input: userStruct.userAttributes?.address?.address),
|
|
102
|
+
postcode: getStringOrNil(input: userStruct.userAttributes?.address?.postcode)
|
|
103
|
+
) : nil,
|
|
104
|
+
fields: fields ?? []
|
|
105
|
+
);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
public static func buildSetUserAttributesPayload(payload: NSDictionary) throws -> RetenoSetUserAttributesPayload {
|
|
109
|
+
let user = payload["user"] as? [String: Any];
|
|
110
|
+
do {
|
|
111
|
+
let userStruct = try RetenoUserStruct(dictionary: user);
|
|
112
|
+
let userAttributes = userStruct.userAttributes != nil ? buildUserAttributes(userStruct: userStruct) : nil;
|
|
113
|
+
let requestPayload = RetenoSetUserAttributesPayload(
|
|
114
|
+
userAttributes: userAttributes,
|
|
115
|
+
subscriptionKeys: userStruct.subscriptionKeys ?? [],
|
|
116
|
+
groupNamesInclude: userStruct.groupNamesInclude ?? [],
|
|
117
|
+
groupNamesExclude: userStruct.groupNamesExclude ?? []
|
|
118
|
+
)
|
|
119
|
+
|
|
120
|
+
return requestPayload;
|
|
121
|
+
} catch {
|
|
122
|
+
throw error;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getInitialNotification = getInitialNotification;
|
|
7
|
+
exports.setDeviceToken = setDeviceToken;
|
|
8
|
+
exports.setOnRetenoPushReceivedListener = setOnRetenoPushReceivedListener;
|
|
9
|
+
exports.setUserAttributes = setUserAttributes;
|
|
10
|
+
var _reactNative = require("react-native");
|
|
11
|
+
const LINKING_ERROR = `The package 'reteno-react-native-sdk' doesn't seem to be linked. Make sure: \n\n` + _reactNative.Platform.select({
|
|
12
|
+
ios: "- You have run 'pod install'\n",
|
|
13
|
+
default: ''
|
|
14
|
+
}) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
|
|
15
|
+
const RetenoSdk = _reactNative.NativeModules.RetenoSdk ? _reactNative.NativeModules.RetenoSdk : new Proxy({}, {
|
|
16
|
+
get() {
|
|
17
|
+
throw new Error(LINKING_ERROR);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
function setDeviceToken(deviceToken) {
|
|
21
|
+
return RetenoSdk.setDeviceToken(deviceToken);
|
|
22
|
+
}
|
|
23
|
+
function setUserAttributes(payload) {
|
|
24
|
+
if (!payload.externalUserId || payload.externalUserId && payload.externalUserId.length === 0) {
|
|
25
|
+
throw new Error('Missing argument: "externalUserId"');
|
|
26
|
+
}
|
|
27
|
+
return RetenoSdk.setUserAttributes(payload);
|
|
28
|
+
}
|
|
29
|
+
function getInitialNotification() {
|
|
30
|
+
return RetenoSdk.getInitialNotification();
|
|
31
|
+
}
|
|
32
|
+
const eventEmitter = _reactNative.Platform.select({
|
|
33
|
+
ios: new _reactNative.NativeEventEmitter(RetenoSdk),
|
|
34
|
+
// @ts-ignore
|
|
35
|
+
android: _reactNative.DeviceEventEmitter
|
|
36
|
+
});
|
|
37
|
+
function setOnRetenoPushReceivedListener(listener) {
|
|
38
|
+
return eventEmitter.addListener('reteno-push-received', listener);
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["LINKING_ERROR","Platform","select","ios","default","RetenoSdk","NativeModules","Proxy","get","Error","setDeviceToken","deviceToken","setUserAttributes","payload","externalUserId","length","getInitialNotification","eventEmitter","NativeEventEmitter","android","DeviceEventEmitter","setOnRetenoPushReceivedListener","listener","addListener"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;AAAA;AAOA,MAAMA,aAAa,GAChB,kFAAiF,GAClFC,qBAAQ,CAACC,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAuCjC,MAAMC,SAAS,GAAGC,0BAAa,CAACD,SAAS,GACrCC,0BAAa,CAACD,SAAS,GACvB,IAAIE,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAG,GAAG;IACJ,MAAM,IAAIC,KAAK,CAACT,aAAa,CAAC;EAChC;AACF,CAAC,CACF;AAEE,SAASU,cAAc,CAACC,WAAmB,EAAiB;EACjE,OAAON,SAAS,CAACK,cAAc,CAACC,WAAW,CAAC;AAC9C;AAEO,SAASC,iBAAiB,CAC/BC,OAAiC,EAClB;EACf,IACE,CAACA,OAAO,CAACC,cAAc,IACtBD,OAAO,CAACC,cAAc,IAAID,OAAO,CAACC,cAAc,CAACC,MAAM,KAAK,CAAE,EAC/D;IACA,MAAM,IAAIN,KAAK,CAAC,oCAAoC,CAAC;EACvD;EACA,OAAOJ,SAAS,CAACO,iBAAiB,CAACC,OAAO,CAAC;AAC7C;AAEO,SAASG,sBAAsB,GAAiB;EACrD,OAAOX,SAAS,CAACW,sBAAsB,EAAE;AAC3C;AAEA,MAAMC,YAAY,GAAGhB,qBAAQ,CAACC,MAAM,CAAC;EACnCC,GAAG,EAAE,IAAIe,+BAAkB,CAACb,SAAS,CAAC;EACtC;EACAc,OAAO,EAAEC;AACX,CAAC,CAAC;AAEK,SAASC,+BAA+B,CAC7CC,QAA8B,EAC9B;EACA,OAAOL,YAAY,CAACM,WAAW,CAAC,sBAAsB,EAAED,QAAQ,CAAC;AACnE"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { DeviceEventEmitter, NativeEventEmitter, NativeModules, Platform } from 'react-native';
|
|
2
|
+
const LINKING_ERROR = `The package 'reteno-react-native-sdk' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
|
|
3
|
+
ios: "- You have run 'pod install'\n",
|
|
4
|
+
default: ''
|
|
5
|
+
}) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
|
|
6
|
+
const RetenoSdk = NativeModules.RetenoSdk ? NativeModules.RetenoSdk : new Proxy({}, {
|
|
7
|
+
get() {
|
|
8
|
+
throw new Error(LINKING_ERROR);
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
export function setDeviceToken(deviceToken) {
|
|
12
|
+
return RetenoSdk.setDeviceToken(deviceToken);
|
|
13
|
+
}
|
|
14
|
+
export function setUserAttributes(payload) {
|
|
15
|
+
if (!payload.externalUserId || payload.externalUserId && payload.externalUserId.length === 0) {
|
|
16
|
+
throw new Error('Missing argument: "externalUserId"');
|
|
17
|
+
}
|
|
18
|
+
return RetenoSdk.setUserAttributes(payload);
|
|
19
|
+
}
|
|
20
|
+
export function getInitialNotification() {
|
|
21
|
+
return RetenoSdk.getInitialNotification();
|
|
22
|
+
}
|
|
23
|
+
const eventEmitter = Platform.select({
|
|
24
|
+
ios: new NativeEventEmitter(RetenoSdk),
|
|
25
|
+
// @ts-ignore
|
|
26
|
+
android: DeviceEventEmitter
|
|
27
|
+
});
|
|
28
|
+
export function setOnRetenoPushReceivedListener(listener) {
|
|
29
|
+
return eventEmitter.addListener('reteno-push-received', listener);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["DeviceEventEmitter","NativeEventEmitter","NativeModules","Platform","LINKING_ERROR","select","ios","default","RetenoSdk","Proxy","get","Error","setDeviceToken","deviceToken","setUserAttributes","payload","externalUserId","length","getInitialNotification","eventEmitter","android","setOnRetenoPushReceivedListener","listener","addListener"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,SACEA,kBAAkB,EAClBC,kBAAkB,EAClBC,aAAa,EACbC,QAAQ,QACH,cAAc;AAErB,MAAMC,aAAa,GAChB,kFAAiF,GAClFD,QAAQ,CAACE,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAuCjC,MAAMC,SAAS,GAAGN,aAAa,CAACM,SAAS,GACrCN,aAAa,CAACM,SAAS,GACvB,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAG,GAAG;IACJ,MAAM,IAAIC,KAAK,CAACP,aAAa,CAAC;EAChC;AACF,CAAC,CACF;AAEL,OAAO,SAASQ,cAAc,CAACC,WAAmB,EAAiB;EACjE,OAAOL,SAAS,CAACI,cAAc,CAACC,WAAW,CAAC;AAC9C;AAEA,OAAO,SAASC,iBAAiB,CAC/BC,OAAiC,EAClB;EACf,IACE,CAACA,OAAO,CAACC,cAAc,IACtBD,OAAO,CAACC,cAAc,IAAID,OAAO,CAACC,cAAc,CAACC,MAAM,KAAK,CAAE,EAC/D;IACA,MAAM,IAAIN,KAAK,CAAC,oCAAoC,CAAC;EACvD;EACA,OAAOH,SAAS,CAACM,iBAAiB,CAACC,OAAO,CAAC;AAC7C;AAEA,OAAO,SAASG,sBAAsB,GAAiB;EACrD,OAAOV,SAAS,CAACU,sBAAsB,EAAE;AAC3C;AAEA,MAAMC,YAAY,GAAGhB,QAAQ,CAACE,MAAM,CAAC;EACnCC,GAAG,EAAE,IAAIL,kBAAkB,CAACO,SAAS,CAAC;EACtC;EACAY,OAAO,EAAEpB;AACX,CAAC,CAAC;AAEF,OAAO,SAASqB,+BAA+B,CAC7CC,QAA8B,EAC9B;EACA,OAAOH,YAAY,CAACI,WAAW,CAAC,sBAAsB,EAAED,QAAQ,CAAC;AACnE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export type Address = {
|
|
2
|
+
region?: string | null;
|
|
3
|
+
town?: string | null;
|
|
4
|
+
address?: string | null;
|
|
5
|
+
postcode?: string | null;
|
|
6
|
+
};
|
|
7
|
+
type Field = {
|
|
8
|
+
key: string;
|
|
9
|
+
value: string;
|
|
10
|
+
};
|
|
11
|
+
type Fields = Field[];
|
|
12
|
+
export type UserAttributes = {
|
|
13
|
+
phone?: string | null;
|
|
14
|
+
email?: string | null;
|
|
15
|
+
firstName?: string | null;
|
|
16
|
+
lastName?: string | null;
|
|
17
|
+
languageCode?: string | null;
|
|
18
|
+
timeZone?: string | null;
|
|
19
|
+
address?: Address | null;
|
|
20
|
+
fields?: Fields | null;
|
|
21
|
+
};
|
|
22
|
+
export type User = {
|
|
23
|
+
userAttributes?: UserAttributes | null;
|
|
24
|
+
subscriptionKeys?: String[] | null;
|
|
25
|
+
groupNamesInclude?: String[] | null;
|
|
26
|
+
groupNamesExclude?: String[] | null;
|
|
27
|
+
};
|
|
28
|
+
export type SetUserAttributesPayload = {
|
|
29
|
+
externalUserId: string;
|
|
30
|
+
user: User;
|
|
31
|
+
};
|
|
32
|
+
export declare function setDeviceToken(deviceToken: string): Promise<void>;
|
|
33
|
+
export declare function setUserAttributes(payload: SetUserAttributesPayload): Promise<void>;
|
|
34
|
+
export declare function getInitialNotification(): Promise<any>;
|
|
35
|
+
export declare function setOnRetenoPushReceivedListener(listener: (event: any) => void): import("react-native").EmitterSubscription;
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAaA,MAAM,MAAM,OAAO,GAAG;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,MAAM,GAAG,KAAK,EAAE,CAAC;AAEtB,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG;IACjB,cAAc,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IACvC,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACnC,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACpC,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC;AAaF,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjE;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,wBAAgB,sBAAsB,IAAI,OAAO,CAAC,GAAG,CAAC,CAErD;AAQD,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,8CAG/B"}
|