@survicate/react-native-survicate 7.1.0 → 7.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/README.md +58 -21
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/survicate/react/SurvicateModuleImpl.java +34 -0
- package/android/src/oldarch/java/com/survicate/react/SurvicateModule.java +3 -0
- package/ios/SurvicateBindings.mm +48 -0
- package/lib/commonjs/NativeSurvicateModule.js.map +1 -1
- package/lib/commonjs/index.js +77 -9
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/NativeSurvicateModule.js.map +1 -1
- package/lib/module/index.js +77 -8
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/index.d.ts +47 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/react-native-survicate.podspec +1 -1
- package/src/NativeSurvicateModule.ts +2 -0
- package/src/index.ts +101 -15
package/README.md
CHANGED
|
@@ -83,33 +83,70 @@ allprojects {
|
|
|
83
83
|
|
|
84
84
|
## Usage
|
|
85
85
|
```javascript
|
|
86
|
-
import Survicate, {
|
|
87
|
-
|
|
88
|
-
|
|
86
|
+
import Survicate, {
|
|
87
|
+
UserTrait,
|
|
88
|
+
ThemeMode,
|
|
89
|
+
ResponseAttribute,
|
|
90
|
+
SurvicateFontSystem,
|
|
91
|
+
SurvicateEventListener,
|
|
92
|
+
SurveyDisplayedEvent,
|
|
93
|
+
QuestionAnsweredEvent,
|
|
94
|
+
SurveyClosedEvent,
|
|
95
|
+
SurveyCompletedEvent,
|
|
96
|
+
} from '@survicate/react-native-survicate';
|
|
97
|
+
|
|
98
|
+
// Initialization
|
|
89
99
|
Survicate.setWorkspaceKey('WORKSPACE_KEY');
|
|
100
|
+
Survicate.initializeSdk();
|
|
101
|
+
|
|
102
|
+
// Events
|
|
90
103
|
Survicate.invokeEvent("eventName");
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
};
|
|
95
|
-
Survicate.invokeEvent("eventName", properties);
|
|
104
|
+
Survicate.invokeEvent("eventName", { property1: "value1", property2: "value2" });
|
|
105
|
+
|
|
106
|
+
// Screens
|
|
96
107
|
Survicate.enterScreen("screenName");
|
|
97
108
|
Survicate.leaveScreen("screenName");
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
109
|
+
|
|
110
|
+
// User traits
|
|
111
|
+
Survicate.setUserTrait(new UserTrait('user_id', 'id'));
|
|
112
|
+
Survicate.setUserTrait(new UserTrait('name', 'John'));
|
|
113
|
+
Survicate.setUserTrait(new UserTrait('age', 25));
|
|
114
|
+
Survicate.setUserTrait(new UserTrait('isPremium', true));
|
|
115
|
+
Survicate.setUserTrait(new UserTrait('lastLogin', new Date()));
|
|
116
|
+
|
|
117
|
+
// Locale
|
|
105
118
|
Survicate.setLocale('en-US');
|
|
119
|
+
|
|
120
|
+
// Theme
|
|
121
|
+
Survicate.setThemeMode(ThemeMode.auto); // ThemeMode.auto | ThemeMode.light | ThemeMode.dark
|
|
122
|
+
|
|
123
|
+
// Custom Fonts
|
|
124
|
+
Survicate.setFonts({
|
|
125
|
+
regular: 'fonts/MyFont-Regular.ttf',
|
|
126
|
+
regularItalic: 'fonts/MyFont-RegularItalic.ttf',
|
|
127
|
+
bold: 'fonts/MyFont-Bold.ttf',
|
|
128
|
+
boldItalic: 'fonts/MyFont-BoldItalic.ttf',
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
// Response attributes
|
|
132
|
+
Survicate.setResponseAttribute(new ResponseAttribute('plan', 'premium'));
|
|
133
|
+
Survicate.setResponseAttributes([
|
|
134
|
+
new ResponseAttribute('plan', 'premium'),
|
|
135
|
+
new ResponseAttribute('seats', 10),
|
|
136
|
+
new ResponseAttribute('isEnterprise', true),
|
|
137
|
+
new ResponseAttribute('renewalDate', new Date()),
|
|
138
|
+
]);
|
|
139
|
+
|
|
140
|
+
// Event listeners
|
|
106
141
|
const listener: SurvicateEventListener = {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
}
|
|
112
|
-
const
|
|
142
|
+
onSurveyDisplayed(event: SurveyDisplayedEvent) {},
|
|
143
|
+
onQuestionAnswered(event: QuestionAnsweredEvent) {},
|
|
144
|
+
onSurveyClosed(event: SurveyClosedEvent) {},
|
|
145
|
+
onSurveyCompleted(event: SurveyCompletedEvent) {},
|
|
146
|
+
};
|
|
147
|
+
const removeListener = Survicate.addSurvicateEventListener(listener);
|
|
148
|
+
|
|
149
|
+
// Reset
|
|
113
150
|
Survicate.reset();
|
|
114
151
|
```
|
|
115
152
|
|
package/android/build.gradle
CHANGED
|
@@ -118,7 +118,7 @@ repositories {
|
|
|
118
118
|
dependencies {
|
|
119
119
|
//noinspection GradleDynamicVersion
|
|
120
120
|
implementation 'com.facebook.react:react-native:+' // From node_modules
|
|
121
|
-
implementation ('com.survicate:survicate-sdk:7.
|
|
121
|
+
implementation ('com.survicate:survicate-sdk:7.2.0')
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
if (isNewArchitectureEnabled()) {
|
|
@@ -2,13 +2,19 @@ package com.survicate.react;
|
|
|
2
2
|
|
|
3
3
|
import com.facebook.react.bridge.ReactApplicationContext;
|
|
4
4
|
import com.facebook.react.bridge.ReactMethod;
|
|
5
|
+
import com.facebook.react.bridge.ReadableArray;
|
|
5
6
|
import com.facebook.react.bridge.ReadableMap;
|
|
7
|
+
import com.survicate.surveys.ResponseAttribute;
|
|
6
8
|
import com.survicate.surveys.Survicate;
|
|
7
9
|
import com.survicate.surveys.ThemeMode;
|
|
10
|
+
import com.survicate.surveys.FontSource;
|
|
11
|
+
import com.survicate.surveys.SurvicateFontSystem;
|
|
8
12
|
import com.survicate.surveys.traits.UserTrait;
|
|
9
13
|
|
|
10
14
|
import com.survicate.react.SurvicateModule;
|
|
11
15
|
|
|
16
|
+
import java.util.ArrayList;
|
|
17
|
+
import java.util.List;
|
|
12
18
|
import java.util.Map;
|
|
13
19
|
import java.util.HashMap;
|
|
14
20
|
|
|
@@ -137,6 +143,34 @@ public class SurvicateModuleImpl extends SurvicateModule {
|
|
|
137
143
|
Survicate.setLocale(locale);
|
|
138
144
|
}
|
|
139
145
|
|
|
146
|
+
@ReactMethod
|
|
147
|
+
public void setResponseAttributes(ReadableArray attributes) {
|
|
148
|
+
if (!isInitialized) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
List<ResponseAttribute> list = new ArrayList<>();
|
|
152
|
+
for (int i = 0; i < attributes.size(); i++) {
|
|
153
|
+
ReadableMap map = attributes.getMap(i);
|
|
154
|
+
String name = map.getString("name");
|
|
155
|
+
String value = map.getString("value");
|
|
156
|
+
String provider = map.hasKey("provider") && !map.isNull("provider")
|
|
157
|
+
? map.getString("provider") : null;
|
|
158
|
+
list.add(new ResponseAttribute(name, value, provider));
|
|
159
|
+
}
|
|
160
|
+
Survicate.setResponseAttributes(list);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
@ReactMethod
|
|
164
|
+
public void setFonts(ReadableMap fontSystem) {
|
|
165
|
+
SurvicateFontSystem fonts = new SurvicateFontSystem(
|
|
166
|
+
new FontSource.AssetPath(fontSystem.getString("regular")),
|
|
167
|
+
new FontSource.AssetPath(fontSystem.getString("regularItalic")),
|
|
168
|
+
new FontSource.AssetPath(fontSystem.getString("bold")),
|
|
169
|
+
new FontSource.AssetPath(fontSystem.getString("boldItalic"))
|
|
170
|
+
);
|
|
171
|
+
Survicate.setFonts(fonts);
|
|
172
|
+
}
|
|
173
|
+
|
|
140
174
|
@ReactMethod
|
|
141
175
|
public void setThemeMode(String themeMode) {
|
|
142
176
|
if (!isInitialized) {
|
|
@@ -4,6 +4,7 @@ import androidx.annotation.NonNull;
|
|
|
4
4
|
|
|
5
5
|
import com.facebook.react.bridge.ReactApplicationContext;
|
|
6
6
|
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
|
7
|
+
import com.facebook.react.bridge.ReadableArray;
|
|
7
8
|
import com.facebook.react.bridge.ReadableMap;
|
|
8
9
|
|
|
9
10
|
public abstract class SurvicateModule extends ReactContextBaseJavaModule {
|
|
@@ -22,4 +23,6 @@ public abstract class SurvicateModule extends ReactContextBaseJavaModule {
|
|
|
22
23
|
public abstract void setWorkspaceKey(String workspaceKey);
|
|
23
24
|
public abstract void setLocale(String locale);
|
|
24
25
|
public abstract void setThemeMode(String themeMode);
|
|
26
|
+
public abstract void setFonts(ReadableMap fontSystem);
|
|
27
|
+
public abstract void setResponseAttributes(ReadableArray attributes);
|
|
25
28
|
}
|
package/ios/SurvicateBindings.mm
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
#import "SurvicateBindings.h"
|
|
2
2
|
#import <Survicate/Survicate-Swift.h>
|
|
3
|
+
#import <CoreText/CoreText.h>
|
|
4
|
+
|
|
5
|
+
static NSString* postScriptNameForPath(NSString *relativePath)
|
|
6
|
+
{
|
|
7
|
+
// Build absolute path to the font file inside the app bundle
|
|
8
|
+
NSString *fullPath = [[NSBundle mainBundle].bundlePath
|
|
9
|
+
stringByAppendingPathComponent:[relativePath lastPathComponent]];
|
|
10
|
+
|
|
11
|
+
NSURL *fontURL = [NSURL fileURLWithPath:fullPath];
|
|
12
|
+
|
|
13
|
+
// Read font descriptors from the file to extract metadata
|
|
14
|
+
CFArrayRef descriptors = CTFontManagerCreateFontDescriptorsFromURL((__bridge CFURLRef)fontURL);
|
|
15
|
+
if (!descriptors || CFArrayGetCount(descriptors) == 0) {
|
|
16
|
+
if (descriptors) CFRelease(descriptors);
|
|
17
|
+
return @"";
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Extract the PostScript name from the first font face in the file
|
|
21
|
+
CTFontDescriptorRef descriptor = (CTFontDescriptorRef)CFArrayGetValueAtIndex(descriptors, 0);
|
|
22
|
+
NSString *postScriptName = (__bridge_transfer NSString *)
|
|
23
|
+
CTFontDescriptorCopyAttribute(descriptor, kCTFontNameAttribute);
|
|
24
|
+
CFRelease(descriptors);
|
|
25
|
+
|
|
26
|
+
return postScriptName ?: @"";
|
|
27
|
+
}
|
|
3
28
|
|
|
4
29
|
@implementation SurvicateBindings
|
|
5
30
|
{
|
|
@@ -59,6 +84,19 @@ RCT_EXPORT_METHOD(setLocale:(NSString *)locale)
|
|
|
59
84
|
[[SurvicateSdk shared] setLocale:locale];
|
|
60
85
|
}
|
|
61
86
|
|
|
87
|
+
RCT_EXPORT_METHOD(setResponseAttributes:(NSArray *)attributes)
|
|
88
|
+
{
|
|
89
|
+
NSMutableArray<ResponseAttribute *> *list = [NSMutableArray array];
|
|
90
|
+
for (NSDictionary *dict in attributes) {
|
|
91
|
+
NSString *name = dict[@"name"];
|
|
92
|
+
NSString *value = dict[@"value"];
|
|
93
|
+
NSString *provider = dict[@"provider"] == [NSNull null] ? nil : dict[@"provider"];
|
|
94
|
+
ResponseAttribute *attr = [[ResponseAttribute alloc] initWithName:name value:value provider:provider];
|
|
95
|
+
[list addObject:attr];
|
|
96
|
+
}
|
|
97
|
+
[[SurvicateSdk shared] setResponseAttributes:list];
|
|
98
|
+
}
|
|
99
|
+
|
|
62
100
|
RCT_EXPORT_METHOD(setThemeMode:(NSString *)themeMode)
|
|
63
101
|
{
|
|
64
102
|
ThemeMode mode = ThemeModeAuto;
|
|
@@ -70,6 +108,16 @@ RCT_EXPORT_METHOD(setThemeMode:(NSString *)themeMode)
|
|
|
70
108
|
[[SurvicateSdk shared] setThemeMode:mode];
|
|
71
109
|
}
|
|
72
110
|
|
|
111
|
+
RCT_EXPORT_METHOD(setFonts:(NSDictionary *)fontSystem)
|
|
112
|
+
{
|
|
113
|
+
SurvicateFontSystem *fonts = [[SurvicateFontSystem alloc]
|
|
114
|
+
initWithRegular:postScriptNameForPath(fontSystem[@"regular"])
|
|
115
|
+
regularItalic:postScriptNameForPath(fontSystem[@"regularItalic"])
|
|
116
|
+
bold:postScriptNameForPath(fontSystem[@"bold"])
|
|
117
|
+
boldItalic:postScriptNameForPath(fontSystem[@"boldItalic"])];
|
|
118
|
+
[[SurvicateSdk shared] setFonts:fonts];
|
|
119
|
+
}
|
|
120
|
+
|
|
73
121
|
- (NSArray<NSString*> *)supportedEvents {
|
|
74
122
|
return @[@"onQuestionAnswered", @"onSurveyClosed", @"onSurveyCompleted", @"onSurveyDisplayed"];
|
|
75
123
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","get"],"sourceRoot":"../../src","sources":["NativeSurvicateModule.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","get"],"sourceRoot":"../../src","sources":["NativeSurvicateModule.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAmBpCC,gCAAmB,CAACC,GAAG,CAAO,mBAAmB,CAAC","ignoreList":[]}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.default = exports.UserTrait = exports.ThemeMode = exports.SurvicateIntegrations = void 0;
|
|
6
|
+
exports.default = exports.UserTrait = exports.ThemeMode = exports.SurvicateIntegrations = exports.ResponseAttribute = void 0;
|
|
7
7
|
var _reactNative = require("react-native");
|
|
8
8
|
const {
|
|
9
9
|
SurvicateBindings
|
|
@@ -136,6 +136,51 @@ class Survicate {
|
|
|
136
136
|
static setThemeMode(themeMode) {
|
|
137
137
|
survicate.setThemeMode(themeMode);
|
|
138
138
|
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Sets custom fonts for use in surveys.
|
|
142
|
+
*
|
|
143
|
+
* @param fontSystem A font configuration to apply.
|
|
144
|
+
*/
|
|
145
|
+
static setFonts(fontSystem) {
|
|
146
|
+
survicate.setFonts(fontSystem);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Shorthand version of {@link setResponseAttributes}.
|
|
151
|
+
*/
|
|
152
|
+
static setResponseAttribute(attribute) {
|
|
153
|
+
survicate.setResponseAttributes([{
|
|
154
|
+
name: attribute.name,
|
|
155
|
+
value: attribute.value,
|
|
156
|
+
provider: attribute.provider ?? null
|
|
157
|
+
}]);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Sets response attributes that will be attached to survey responses.
|
|
162
|
+
*
|
|
163
|
+
* These can be arbitrary key-value pairs. Unlike {@link UserTrait}s, response attributes
|
|
164
|
+
* are session-scoped and are cleared upon a new app session. Response attributes are sent
|
|
165
|
+
* to the system along with the user's answers to survey questions.
|
|
166
|
+
*
|
|
167
|
+
* To change a {@link ResponseAttribute} send the same key with a different value.
|
|
168
|
+
*/
|
|
169
|
+
static setResponseAttributes(attributes) {
|
|
170
|
+
const mapped = attributes.map(a => ({
|
|
171
|
+
name: a.name,
|
|
172
|
+
value: a.value,
|
|
173
|
+
provider: a.provider ?? null
|
|
174
|
+
}));
|
|
175
|
+
survicate.setResponseAttributes(mapped);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
function formatDateToTimeZoneIso(date) {
|
|
179
|
+
const offset = date.getTimezoneOffset();
|
|
180
|
+
const offsetHours = Math.floor(Math.abs(offset) / 60);
|
|
181
|
+
const offsetMinutes = Math.abs(offset) % 60;
|
|
182
|
+
date = new Date(date.getTime() - offset * 60 * 1000);
|
|
183
|
+
return date.toISOString().slice(0, -5) + (offset > 0 ? "-" : "+") + offsetHours.toString().padStart(2, "0") + ":" + offsetMinutes.toString().padStart(2, "0");
|
|
139
184
|
}
|
|
140
185
|
class UserTrait {
|
|
141
186
|
constructor(key, value) {
|
|
@@ -144,18 +189,11 @@ class UserTrait {
|
|
|
144
189
|
}
|
|
145
190
|
this.key = key;
|
|
146
191
|
if (value instanceof Date) {
|
|
147
|
-
this.value =
|
|
192
|
+
this.value = formatDateToTimeZoneIso(value);
|
|
148
193
|
} else {
|
|
149
194
|
this.value = value.toString();
|
|
150
195
|
}
|
|
151
196
|
}
|
|
152
|
-
formatDateToTimeZoneIso(date) {
|
|
153
|
-
const offset = date.getTimezoneOffset();
|
|
154
|
-
const offsetHours = Math.floor(Math.abs(offset) / 60);
|
|
155
|
-
const offsetMinutes = Math.abs(offset) % 60;
|
|
156
|
-
date = new Date(date.getTime() - offset * 60 * 1000);
|
|
157
|
-
return date.toISOString().slice(0, -5) + (offset > 0 ? "-" : "+") + offsetHours.toString().padStart(2, "0") + ":" + offsetMinutes.toString().padStart(2, "0");
|
|
158
|
-
}
|
|
159
197
|
}
|
|
160
198
|
exports.UserTrait = UserTrait;
|
|
161
199
|
let ThemeMode = exports.ThemeMode = /*#__PURE__*/function (ThemeMode) {
|
|
@@ -164,5 +202,35 @@ let ThemeMode = exports.ThemeMode = /*#__PURE__*/function (ThemeMode) {
|
|
|
164
202
|
ThemeMode["auto"] = "auto";
|
|
165
203
|
return ThemeMode;
|
|
166
204
|
}({});
|
|
205
|
+
/**
|
|
206
|
+
* Represents a complete set of fonts used by the SDK.
|
|
207
|
+
*
|
|
208
|
+
* @property regular Standard font for normal body text.
|
|
209
|
+
* @property regularItalic Standard font with italic slant.
|
|
210
|
+
* @property bold Bold style font for emphasized content.
|
|
211
|
+
* @property boldItalic Bold style font with italic slant.
|
|
212
|
+
*/
|
|
213
|
+
/**
|
|
214
|
+
* Represents a response attribute attached to a survey response.
|
|
215
|
+
*
|
|
216
|
+
* @property name The attribute identifier.
|
|
217
|
+
* @property value The attribute value.
|
|
218
|
+
* @property provider Optional source or provider of the attribute.
|
|
219
|
+
*/
|
|
220
|
+
class ResponseAttribute {
|
|
221
|
+
constructor(name, value, provider) {
|
|
222
|
+
if (name === null || value === null) {
|
|
223
|
+
throw new Error("Name and value cannot be null");
|
|
224
|
+
}
|
|
225
|
+
this.name = name;
|
|
226
|
+
if (value instanceof Date) {
|
|
227
|
+
this.value = formatDateToTimeZoneIso(value);
|
|
228
|
+
} else {
|
|
229
|
+
this.value = value.toString();
|
|
230
|
+
}
|
|
231
|
+
this.provider = provider;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
exports.ResponseAttribute = ResponseAttribute;
|
|
167
235
|
var _default = exports.default = Survicate;
|
|
168
236
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","SurvicateBindings","NativeModules","isTurboModuleEnabled","global","__turboModuleProxy","survicate","default","SurvicateIntegrations","exports","Survicate","integrations","setWorkspaceKey","workspaceKey","initializeSdk","invokeEvent","eventName","eventProperties","enterScreen","screenName","leaveScreen","setUserId","userId","setUserTrait","traitNameOrUserTrait","traitValue","undefined","UserTrait","key","value","reset","addSurvicateEventListener","listener","eventEmitter","NativeEventEmitter","onSurveyDisplayedCallback","nativeEvent","event","surveyId","onSurveyDisplayed","onSurveyDisplayedListener","addListener","onQuestionAnsweredCallback","answer","type","answerType","id","answerId","ids","answerIds","answerValue","surveyName","visitorUuid","responseUuid","questionId","question","panelAnswerUrl","onQuestionAnswered","onQuestionAnsweredListener","onSurveyCompletedCallback","onSurveyCompleted","onSurveyCompletedListener","onSurveyClosedCallback","onSurveyClosed","onSurveyClosedListener","remove","setLocale","languageTag","setThemeMode","themeMode","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","SurvicateBindings","NativeModules","isTurboModuleEnabled","global","__turboModuleProxy","survicate","default","SurvicateIntegrations","exports","Survicate","integrations","setWorkspaceKey","workspaceKey","initializeSdk","invokeEvent","eventName","eventProperties","enterScreen","screenName","leaveScreen","setUserId","userId","setUserTrait","traitNameOrUserTrait","traitValue","undefined","UserTrait","key","value","reset","addSurvicateEventListener","listener","eventEmitter","NativeEventEmitter","onSurveyDisplayedCallback","nativeEvent","event","surveyId","onSurveyDisplayed","onSurveyDisplayedListener","addListener","onQuestionAnsweredCallback","answer","type","answerType","id","answerId","ids","answerIds","answerValue","surveyName","visitorUuid","responseUuid","questionId","question","panelAnswerUrl","onQuestionAnswered","onQuestionAnsweredListener","onSurveyCompletedCallback","onSurveyCompleted","onSurveyCompletedListener","onSurveyClosedCallback","onSurveyClosed","onSurveyClosedListener","remove","setLocale","languageTag","setThemeMode","themeMode","setFonts","fontSystem","setResponseAttribute","attribute","setResponseAttributes","name","provider","attributes","mapped","map","a","formatDateToTimeZoneIso","date","offset","getTimezoneOffset","offsetHours","Math","floor","abs","offsetMinutes","Date","getTime","toISOString","slice","toString","padStart","constructor","Error","ThemeMode","ResponseAttribute","_default"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TurboModuleRegistry","get"],"sourceRoot":"../../src","sources":["NativeSurvicateModule.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;
|
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","get"],"sourceRoot":"../../src","sources":["NativeSurvicateModule.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AAmBlD,eAAeA,mBAAmB,CAACC,GAAG,CAAO,mBAAmB,CAAC","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -131,6 +131,51 @@ class Survicate {
|
|
|
131
131
|
static setThemeMode(themeMode) {
|
|
132
132
|
survicate.setThemeMode(themeMode);
|
|
133
133
|
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Sets custom fonts for use in surveys.
|
|
137
|
+
*
|
|
138
|
+
* @param fontSystem A font configuration to apply.
|
|
139
|
+
*/
|
|
140
|
+
static setFonts(fontSystem) {
|
|
141
|
+
survicate.setFonts(fontSystem);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Shorthand version of {@link setResponseAttributes}.
|
|
146
|
+
*/
|
|
147
|
+
static setResponseAttribute(attribute) {
|
|
148
|
+
survicate.setResponseAttributes([{
|
|
149
|
+
name: attribute.name,
|
|
150
|
+
value: attribute.value,
|
|
151
|
+
provider: attribute.provider ?? null
|
|
152
|
+
}]);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Sets response attributes that will be attached to survey responses.
|
|
157
|
+
*
|
|
158
|
+
* These can be arbitrary key-value pairs. Unlike {@link UserTrait}s, response attributes
|
|
159
|
+
* are session-scoped and are cleared upon a new app session. Response attributes are sent
|
|
160
|
+
* to the system along with the user's answers to survey questions.
|
|
161
|
+
*
|
|
162
|
+
* To change a {@link ResponseAttribute} send the same key with a different value.
|
|
163
|
+
*/
|
|
164
|
+
static setResponseAttributes(attributes) {
|
|
165
|
+
const mapped = attributes.map(a => ({
|
|
166
|
+
name: a.name,
|
|
167
|
+
value: a.value,
|
|
168
|
+
provider: a.provider ?? null
|
|
169
|
+
}));
|
|
170
|
+
survicate.setResponseAttributes(mapped);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
function formatDateToTimeZoneIso(date) {
|
|
174
|
+
const offset = date.getTimezoneOffset();
|
|
175
|
+
const offsetHours = Math.floor(Math.abs(offset) / 60);
|
|
176
|
+
const offsetMinutes = Math.abs(offset) % 60;
|
|
177
|
+
date = new Date(date.getTime() - offset * 60 * 1000);
|
|
178
|
+
return date.toISOString().slice(0, -5) + (offset > 0 ? "-" : "+") + offsetHours.toString().padStart(2, "0") + ":" + offsetMinutes.toString().padStart(2, "0");
|
|
134
179
|
}
|
|
135
180
|
export class UserTrait {
|
|
136
181
|
constructor(key, value) {
|
|
@@ -139,18 +184,11 @@ export class UserTrait {
|
|
|
139
184
|
}
|
|
140
185
|
this.key = key;
|
|
141
186
|
if (value instanceof Date) {
|
|
142
|
-
this.value =
|
|
187
|
+
this.value = formatDateToTimeZoneIso(value);
|
|
143
188
|
} else {
|
|
144
189
|
this.value = value.toString();
|
|
145
190
|
}
|
|
146
191
|
}
|
|
147
|
-
formatDateToTimeZoneIso(date) {
|
|
148
|
-
const offset = date.getTimezoneOffset();
|
|
149
|
-
const offsetHours = Math.floor(Math.abs(offset) / 60);
|
|
150
|
-
const offsetMinutes = Math.abs(offset) % 60;
|
|
151
|
-
date = new Date(date.getTime() - offset * 60 * 1000);
|
|
152
|
-
return date.toISOString().slice(0, -5) + (offset > 0 ? "-" : "+") + offsetHours.toString().padStart(2, "0") + ":" + offsetMinutes.toString().padStart(2, "0");
|
|
153
|
-
}
|
|
154
192
|
}
|
|
155
193
|
export let ThemeMode = /*#__PURE__*/function (ThemeMode) {
|
|
156
194
|
ThemeMode["light"] = "light";
|
|
@@ -158,5 +196,36 @@ export let ThemeMode = /*#__PURE__*/function (ThemeMode) {
|
|
|
158
196
|
ThemeMode["auto"] = "auto";
|
|
159
197
|
return ThemeMode;
|
|
160
198
|
}({});
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Represents a complete set of fonts used by the SDK.
|
|
202
|
+
*
|
|
203
|
+
* @property regular Standard font for normal body text.
|
|
204
|
+
* @property regularItalic Standard font with italic slant.
|
|
205
|
+
* @property bold Bold style font for emphasized content.
|
|
206
|
+
* @property boldItalic Bold style font with italic slant.
|
|
207
|
+
*/
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Represents a response attribute attached to a survey response.
|
|
211
|
+
*
|
|
212
|
+
* @property name The attribute identifier.
|
|
213
|
+
* @property value The attribute value.
|
|
214
|
+
* @property provider Optional source or provider of the attribute.
|
|
215
|
+
*/
|
|
216
|
+
export class ResponseAttribute {
|
|
217
|
+
constructor(name, value, provider) {
|
|
218
|
+
if (name === null || value === null) {
|
|
219
|
+
throw new Error("Name and value cannot be null");
|
|
220
|
+
}
|
|
221
|
+
this.name = name;
|
|
222
|
+
if (value instanceof Date) {
|
|
223
|
+
this.value = formatDateToTimeZoneIso(value);
|
|
224
|
+
} else {
|
|
225
|
+
this.value = value.toString();
|
|
226
|
+
}
|
|
227
|
+
this.provider = provider;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
161
230
|
export default Survicate;
|
|
162
231
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeModules","NativeEventEmitter","SurvicateBindings","isTurboModuleEnabled","global","__turboModuleProxy","survicate","require","default","SurvicateIntegrations","Survicate","integrations","setWorkspaceKey","workspaceKey","initializeSdk","invokeEvent","eventName","eventProperties","enterScreen","screenName","leaveScreen","setUserId","userId","setUserTrait","traitNameOrUserTrait","traitValue","undefined","UserTrait","key","value","reset","addSurvicateEventListener","listener","eventEmitter","onSurveyDisplayedCallback","nativeEvent","event","surveyId","onSurveyDisplayed","onSurveyDisplayedListener","addListener","onQuestionAnsweredCallback","answer","type","answerType","id","answerId","ids","answerIds","answerValue","surveyName","visitorUuid","responseUuid","questionId","question","panelAnswerUrl","onQuestionAnswered","onQuestionAnsweredListener","onSurveyCompletedCallback","onSurveyCompleted","onSurveyCompletedListener","onSurveyClosedCallback","onSurveyClosed","onSurveyClosedListener","remove","setLocale","languageTag","setThemeMode","themeMode","
|
|
1
|
+
{"version":3,"names":["NativeModules","NativeEventEmitter","SurvicateBindings","isTurboModuleEnabled","global","__turboModuleProxy","survicate","require","default","SurvicateIntegrations","Survicate","integrations","setWorkspaceKey","workspaceKey","initializeSdk","invokeEvent","eventName","eventProperties","enterScreen","screenName","leaveScreen","setUserId","userId","setUserTrait","traitNameOrUserTrait","traitValue","undefined","UserTrait","key","value","reset","addSurvicateEventListener","listener","eventEmitter","onSurveyDisplayedCallback","nativeEvent","event","surveyId","onSurveyDisplayed","onSurveyDisplayedListener","addListener","onQuestionAnsweredCallback","answer","type","answerType","id","answerId","ids","answerIds","answerValue","surveyName","visitorUuid","responseUuid","questionId","question","panelAnswerUrl","onQuestionAnswered","onQuestionAnsweredListener","onSurveyCompletedCallback","onSurveyCompleted","onSurveyCompletedListener","onSurveyClosedCallback","onSurveyClosed","onSurveyClosedListener","remove","setLocale","languageTag","setThemeMode","themeMode","setFonts","fontSystem","setResponseAttribute","attribute","setResponseAttributes","name","provider","attributes","mapped","map","a","formatDateToTimeZoneIso","date","offset","getTimezoneOffset","offsetHours","Math","floor","abs","offsetMinutes","Date","getTime","toISOString","slice","toString","padStart","constructor","Error","ThemeMode","ResponseAttribute"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -37,12 +37,31 @@ declare class Survicate {
|
|
|
37
37
|
* @param themeMode The theme mode to apply: ThemeMode.light, ThemeMode.dark, or ThemeMode.auto (default).
|
|
38
38
|
*/
|
|
39
39
|
static setThemeMode(themeMode: ThemeMode): void;
|
|
40
|
+
/**
|
|
41
|
+
* Sets custom fonts for use in surveys.
|
|
42
|
+
*
|
|
43
|
+
* @param fontSystem A font configuration to apply.
|
|
44
|
+
*/
|
|
45
|
+
static setFonts(fontSystem: SurvicateFontSystem): void;
|
|
46
|
+
/**
|
|
47
|
+
* Shorthand version of {@link setResponseAttributes}.
|
|
48
|
+
*/
|
|
49
|
+
static setResponseAttribute(attribute: ResponseAttribute): void;
|
|
50
|
+
/**
|
|
51
|
+
* Sets response attributes that will be attached to survey responses.
|
|
52
|
+
*
|
|
53
|
+
* These can be arbitrary key-value pairs. Unlike {@link UserTrait}s, response attributes
|
|
54
|
+
* are session-scoped and are cleared upon a new app session. Response attributes are sent
|
|
55
|
+
* to the system along with the user's answers to survey questions.
|
|
56
|
+
*
|
|
57
|
+
* To change a {@link ResponseAttribute} send the same key with a different value.
|
|
58
|
+
*/
|
|
59
|
+
static setResponseAttributes(attributes: ResponseAttribute[]): void;
|
|
40
60
|
}
|
|
41
61
|
export declare class UserTrait {
|
|
42
62
|
key: string;
|
|
43
63
|
value: string;
|
|
44
64
|
constructor(key: string, value: string | number | boolean | Date);
|
|
45
|
-
private formatDateToTimeZoneIso;
|
|
46
65
|
}
|
|
47
66
|
export type SurveyDisplayedEvent = {
|
|
48
67
|
surveyId: string;
|
|
@@ -80,5 +99,32 @@ export declare enum ThemeMode {
|
|
|
80
99
|
dark = "dark",
|
|
81
100
|
auto = "auto"
|
|
82
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Represents a complete set of fonts used by the SDK.
|
|
104
|
+
*
|
|
105
|
+
* @property regular Standard font for normal body text.
|
|
106
|
+
* @property regularItalic Standard font with italic slant.
|
|
107
|
+
* @property bold Bold style font for emphasized content.
|
|
108
|
+
* @property boldItalic Bold style font with italic slant.
|
|
109
|
+
*/
|
|
110
|
+
export type SurvicateFontSystem = {
|
|
111
|
+
regular: string;
|
|
112
|
+
regularItalic: string;
|
|
113
|
+
bold: string;
|
|
114
|
+
boldItalic: string;
|
|
115
|
+
};
|
|
116
|
+
/**
|
|
117
|
+
* Represents a response attribute attached to a survey response.
|
|
118
|
+
*
|
|
119
|
+
* @property name The attribute identifier.
|
|
120
|
+
* @property value The attribute value.
|
|
121
|
+
* @property provider Optional source or provider of the attribute.
|
|
122
|
+
*/
|
|
123
|
+
export declare class ResponseAttribute {
|
|
124
|
+
name: string;
|
|
125
|
+
value: string;
|
|
126
|
+
provider?: string;
|
|
127
|
+
constructor(name: string, value: string | number | boolean | Date, provider?: string);
|
|
128
|
+
}
|
|
83
129
|
export default Survicate;
|
|
84
130
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAWA,qBAAa,qBAAqB;CAAG;AAErC,cAAM,SAAS;IACb,MAAM,CAAC,YAAY,wBAA+B;IAElD,MAAM,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAIlD,MAAM,CAAC,aAAa,IAAI,IAAI;IAI5B,MAAM,CAAC,WAAW,CAChB,SAAS,EAAE,MAAM,EACjB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvC,IAAI;IAIP,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAI5C,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAI5C;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAItC;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAChE,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAe/C,MAAM,CAAC,KAAK,IAAI,IAAI;IAIpB,MAAM,CAAC,yBAAyB,CAC9B,QAAQ,EAAE,sBAAsB,GAC/B,MAAM,IAAI;IAwEb;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAI3C;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@survicate/react-native-survicate",
|
|
3
3
|
"title": "React Native Survicate Bindings",
|
|
4
|
-
"version": "7.
|
|
4
|
+
"version": "7.2.0",
|
|
5
5
|
"description": "React Native bindings for Survicate Mobile SDK",
|
|
6
6
|
"main": "lib/commonjs/index.js",
|
|
7
7
|
"module": "lib/module/index.js",
|
|
@@ -14,6 +14,8 @@ export interface Spec extends TurboModule {
|
|
|
14
14
|
removeListeners(count: number): void;
|
|
15
15
|
setLocale(locale: string): void;
|
|
16
16
|
setThemeMode(themeMode: string): void;
|
|
17
|
+
setFonts(fontSystem: Object): void;
|
|
18
|
+
setResponseAttributes(attributes: ReadonlyArray<{ name: string; value: string; provider: string | null }>): void;
|
|
17
19
|
}
|
|
18
20
|
|
|
19
21
|
export default TurboModuleRegistry.get<Spec>("SurvicateBindings");
|
package/src/index.ts
CHANGED
|
@@ -165,6 +165,58 @@ class Survicate {
|
|
|
165
165
|
static setThemeMode(themeMode: ThemeMode): void {
|
|
166
166
|
survicate.setThemeMode(themeMode);
|
|
167
167
|
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Sets custom fonts for use in surveys.
|
|
171
|
+
*
|
|
172
|
+
* @param fontSystem A font configuration to apply.
|
|
173
|
+
*/
|
|
174
|
+
static setFonts(fontSystem: SurvicateFontSystem): void {
|
|
175
|
+
survicate.setFonts(fontSystem);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Shorthand version of {@link setResponseAttributes}.
|
|
180
|
+
*/
|
|
181
|
+
static setResponseAttribute(attribute: ResponseAttribute): void {
|
|
182
|
+
survicate.setResponseAttributes([{
|
|
183
|
+
name: attribute.name,
|
|
184
|
+
value: attribute.value,
|
|
185
|
+
provider: attribute.provider ?? null,
|
|
186
|
+
}]);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Sets response attributes that will be attached to survey responses.
|
|
191
|
+
*
|
|
192
|
+
* These can be arbitrary key-value pairs. Unlike {@link UserTrait}s, response attributes
|
|
193
|
+
* are session-scoped and are cleared upon a new app session. Response attributes are sent
|
|
194
|
+
* to the system along with the user's answers to survey questions.
|
|
195
|
+
*
|
|
196
|
+
* To change a {@link ResponseAttribute} send the same key with a different value.
|
|
197
|
+
*/
|
|
198
|
+
static setResponseAttributes(attributes: ResponseAttribute[]): void {
|
|
199
|
+
const mapped = attributes.map((a) => ({
|
|
200
|
+
name: a.name,
|
|
201
|
+
value: a.value,
|
|
202
|
+
provider: a.provider ?? null,
|
|
203
|
+
}));
|
|
204
|
+
survicate.setResponseAttributes(mapped);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
function formatDateToTimeZoneIso(date: Date): string {
|
|
209
|
+
const offset = date.getTimezoneOffset();
|
|
210
|
+
const offsetHours = Math.floor(Math.abs(offset) / 60);
|
|
211
|
+
const offsetMinutes = Math.abs(offset) % 60;
|
|
212
|
+
date = new Date(date.getTime() - offset * 60 * 1000);
|
|
213
|
+
return (
|
|
214
|
+
date.toISOString().slice(0, -5) +
|
|
215
|
+
(offset > 0 ? "-" : "+") +
|
|
216
|
+
offsetHours.toString().padStart(2, "0") +
|
|
217
|
+
":" +
|
|
218
|
+
offsetMinutes.toString().padStart(2, "0")
|
|
219
|
+
);
|
|
168
220
|
}
|
|
169
221
|
|
|
170
222
|
export class UserTrait {
|
|
@@ -179,25 +231,11 @@ export class UserTrait {
|
|
|
179
231
|
this.key = key;
|
|
180
232
|
|
|
181
233
|
if (value instanceof Date) {
|
|
182
|
-
this.value =
|
|
234
|
+
this.value = formatDateToTimeZoneIso(value);
|
|
183
235
|
} else {
|
|
184
236
|
this.value = value.toString();
|
|
185
237
|
}
|
|
186
238
|
}
|
|
187
|
-
|
|
188
|
-
private formatDateToTimeZoneIso(date: Date): string {
|
|
189
|
-
const offset = date.getTimezoneOffset();
|
|
190
|
-
const offsetHours = Math.floor(Math.abs(offset) / 60);
|
|
191
|
-
const offsetMinutes = Math.abs(offset) % 60;
|
|
192
|
-
date = new Date(date.getTime() - offset * 60 * 1000);
|
|
193
|
-
return (
|
|
194
|
-
date.toISOString().slice(0, -5) +
|
|
195
|
-
(offset > 0 ? "-" : "+") +
|
|
196
|
-
offsetHours.toString().padStart(2, "0") +
|
|
197
|
-
":" +
|
|
198
|
-
offsetMinutes.toString().padStart(2, "0")
|
|
199
|
-
);
|
|
200
|
-
}
|
|
201
239
|
}
|
|
202
240
|
|
|
203
241
|
export type SurveyDisplayedEvent = {
|
|
@@ -243,4 +281,52 @@ export enum ThemeMode {
|
|
|
243
281
|
auto = "auto",
|
|
244
282
|
}
|
|
245
283
|
|
|
284
|
+
/**
|
|
285
|
+
* Represents a complete set of fonts used by the SDK.
|
|
286
|
+
*
|
|
287
|
+
* @property regular Standard font for normal body text.
|
|
288
|
+
* @property regularItalic Standard font with italic slant.
|
|
289
|
+
* @property bold Bold style font for emphasized content.
|
|
290
|
+
* @property boldItalic Bold style font with italic slant.
|
|
291
|
+
*/
|
|
292
|
+
export type SurvicateFontSystem = {
|
|
293
|
+
regular: string;
|
|
294
|
+
regularItalic: string;
|
|
295
|
+
bold: string;
|
|
296
|
+
boldItalic: string;
|
|
297
|
+
};
|
|
298
|
+
|
|
299
|
+
/**
|
|
300
|
+
* Represents a response attribute attached to a survey response.
|
|
301
|
+
*
|
|
302
|
+
* @property name The attribute identifier.
|
|
303
|
+
* @property value The attribute value.
|
|
304
|
+
* @property provider Optional source or provider of the attribute.
|
|
305
|
+
*/
|
|
306
|
+
export class ResponseAttribute {
|
|
307
|
+
name: string;
|
|
308
|
+
value: string;
|
|
309
|
+
provider?: string;
|
|
310
|
+
|
|
311
|
+
constructor(
|
|
312
|
+
name: string,
|
|
313
|
+
value: string | number | boolean | Date,
|
|
314
|
+
provider?: string
|
|
315
|
+
) {
|
|
316
|
+
if (name === null || value === null) {
|
|
317
|
+
throw new Error("Name and value cannot be null");
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
this.name = name;
|
|
321
|
+
|
|
322
|
+
if (value instanceof Date) {
|
|
323
|
+
this.value = formatDateToTimeZoneIso(value);
|
|
324
|
+
} else {
|
|
325
|
+
this.value = value.toString();
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
this.provider = provider;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
|
|
246
332
|
export default Survicate;
|