@soyio/soyio-rn-sdk 4.1.14 → 4.1.15
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 +35 -0
- package/package/package.json +1 -1
- package/package/src/types.d.ts +6 -0
- package/package/src/webview.d.ts +1 -1
- package/package/src/webview.jsx +43 -7
- package/package/src/webview.jsx.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -457,6 +457,41 @@ import type { SoyioAppearance, SoyioTheme } from '@soyio/soyio-rn-sdk';
|
|
|
457
457
|
|
|
458
458
|
For a full list of available customization options and examples, please refer to the [Appearance Customization Guide](https://docs.soyio.id/integration-guide/appearance).
|
|
459
459
|
|
|
460
|
+
### Loading State
|
|
461
|
+
|
|
462
|
+
By default, `SoyioWidget` shows a centered `ActivityIndicator` while the WebView loads, replacing the blank white screen that would otherwise appear for a few seconds.
|
|
463
|
+
|
|
464
|
+
You can customize or disable this behavior with the `renderLoading` prop:
|
|
465
|
+
|
|
466
|
+
```jsx
|
|
467
|
+
// Default: shows a centered ActivityIndicator (no prop needed)
|
|
468
|
+
<SoyioWidget
|
|
469
|
+
options={options}
|
|
470
|
+
requestType="disclosure"
|
|
471
|
+
requestParams={disclosureParams}
|
|
472
|
+
/>
|
|
473
|
+
|
|
474
|
+
// Custom loading UI
|
|
475
|
+
<SoyioWidget
|
|
476
|
+
options={options}
|
|
477
|
+
requestType="disclosure"
|
|
478
|
+
requestParams={disclosureParams}
|
|
479
|
+
renderLoading={() => (
|
|
480
|
+
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
|
|
481
|
+
<Text>Loading...</Text>
|
|
482
|
+
</View>
|
|
483
|
+
)}
|
|
484
|
+
/>
|
|
485
|
+
|
|
486
|
+
// Disable loading overlay entirely
|
|
487
|
+
<SoyioWidget
|
|
488
|
+
options={options}
|
|
489
|
+
requestType="disclosure"
|
|
490
|
+
requestParams={disclosureParams}
|
|
491
|
+
renderLoading={null}
|
|
492
|
+
/>
|
|
493
|
+
```
|
|
494
|
+
|
|
460
495
|
### Event Handling
|
|
461
496
|
|
|
462
497
|
The `SoyioWidget` component supports the following event handlers:
|
package/package/package.json
CHANGED
package/package/src/types.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type React from 'react';
|
|
1
2
|
import type { StyleProp, ViewStyle } from 'react-native';
|
|
2
3
|
export type SoyioErrors = 'user_exists' | 'facial_validation_error' | 'document_validation_error' | 'unknown_error';
|
|
3
4
|
export interface FaceTecCredentials {
|
|
@@ -145,5 +146,10 @@ export type SoyioWidgetProps = {
|
|
|
145
146
|
appearance?: SoyioAppearance;
|
|
146
147
|
autoHeight?: boolean;
|
|
147
148
|
style?: StyleProp<ViewStyle>;
|
|
149
|
+
/**
|
|
150
|
+
* Custom loading UI while the WebView loads.
|
|
151
|
+
* Defaults to a centered ActivityIndicator. Pass `null` to disable.
|
|
152
|
+
*/
|
|
153
|
+
renderLoading?: (() => React.ReactNode) | null;
|
|
148
154
|
};
|
|
149
155
|
export {};
|
package/package/src/webview.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { SoyioWidgetProps } from './types';
|
|
3
|
-
export declare const SoyioWidget: ({ options, requestType, requestParams, onSuccess, onEvent, onReady, appearance, autoHeight, style, }: SoyioWidgetProps) => React.JSX.Element;
|
|
3
|
+
export declare const SoyioWidget: ({ options, requestType, requestParams, onSuccess, onEvent, onReady, appearance, autoHeight, style, renderLoading, }: SoyioWidgetProps) => React.JSX.Element;
|
package/package/src/webview.jsx
CHANGED
|
@@ -61,18 +61,53 @@ var styles = react_native_1.StyleSheet.create({
|
|
|
61
61
|
fill: {
|
|
62
62
|
height: '100%',
|
|
63
63
|
},
|
|
64
|
+
loadingOverlay: {
|
|
65
|
+
position: 'absolute',
|
|
66
|
+
top: 0,
|
|
67
|
+
left: 0,
|
|
68
|
+
right: 0,
|
|
69
|
+
bottom: 0,
|
|
70
|
+
justifyContent: 'center',
|
|
71
|
+
alignItems: 'center',
|
|
72
|
+
zIndex: 1,
|
|
73
|
+
},
|
|
64
74
|
});
|
|
65
75
|
var SoyioWidget = function (_a) {
|
|
66
|
-
var options = _a.options, requestType = _a.requestType, requestParams = _a.requestParams, onSuccess = _a.onSuccess, onEvent = _a.onEvent, onReady = _a.onReady, appearance = _a.appearance, _b = _a.autoHeight, autoHeight = _b === void 0 ? true : _b, style = _a.style;
|
|
76
|
+
var options = _a.options, requestType = _a.requestType, requestParams = _a.requestParams, onSuccess = _a.onSuccess, onEvent = _a.onEvent, onReady = _a.onReady, appearance = _a.appearance, _b = _a.autoHeight, autoHeight = _b === void 0 ? true : _b, style = _a.style, renderLoading = _a.renderLoading;
|
|
67
77
|
var webViewRef = (0, react_1.useRef)(null);
|
|
68
78
|
var heightAnim = (0, react_1.useRef)(new react_native_1.Animated.Value(0)).current;
|
|
69
|
-
var
|
|
70
|
-
var
|
|
79
|
+
var fadeAnim = (0, react_1.useRef)(new react_native_1.Animated.Value(1)).current;
|
|
80
|
+
var _c = (0, react_1.useState)(true), isLoading = _c[0], setIsLoading = _c[1];
|
|
81
|
+
var _d = (0, react_1.useState)(true), showOverlay = _d[0], setShowOverlay = _d[1];
|
|
82
|
+
var _e = react_1.default.useState(0), containerWidth = _e[0], setContainerWidth = _e[1];
|
|
83
|
+
var _f = react_1.default.useState({
|
|
71
84
|
visible: false,
|
|
72
85
|
text: '',
|
|
73
86
|
x: 0,
|
|
74
87
|
y: 0,
|
|
75
|
-
}), tooltip =
|
|
88
|
+
}), tooltip = _f[0], setTooltip = _f[1];
|
|
89
|
+
(0, react_1.useEffect)(function () {
|
|
90
|
+
if (!isLoading) {
|
|
91
|
+
react_native_1.Animated.timing(fadeAnim, {
|
|
92
|
+
toValue: 0,
|
|
93
|
+
duration: 200,
|
|
94
|
+
useNativeDriver: true,
|
|
95
|
+
}).start(function (_a) {
|
|
96
|
+
var finished = _a.finished;
|
|
97
|
+
if (finished)
|
|
98
|
+
setShowOverlay(false);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}, [isLoading, fadeAnim]);
|
|
102
|
+
var handleLoadEnd = (0, react_1.useCallback)(function () {
|
|
103
|
+
setIsLoading(false);
|
|
104
|
+
onReady === null || onReady === void 0 ? void 0 : onReady();
|
|
105
|
+
}, [onReady]);
|
|
106
|
+
var loadingContent = <react_native_1.ActivityIndicator size="large"/>;
|
|
107
|
+
if (renderLoading === null)
|
|
108
|
+
loadingContent = null;
|
|
109
|
+
else if (renderLoading)
|
|
110
|
+
loadingContent = renderLoading();
|
|
76
111
|
var getIdentifier = (0, react_1.useCallback)(function () {
|
|
77
112
|
if (requestType === 'consent') {
|
|
78
113
|
return requestParams.templateId;
|
|
@@ -144,11 +179,12 @@ var SoyioWidget = function (_a) {
|
|
|
144
179
|
var webViewUrl = (0, utils_1.buildUrl)(options, requestType, requestParams);
|
|
145
180
|
return (<react_native_1.View style={containerStyle}>
|
|
146
181
|
<react_native_1.Animated.View style={[innerStyle, animatedStyle]} onLayout={function (e) { return setContainerWidth(e.nativeEvent.layout.width); }}>
|
|
147
|
-
<react_native_webview_1.WebView ref={webViewRef} source={{ uri: webViewUrl }} originWhitelist={__spreadArray(__spreadArray([], constants_1.SOYIO_BASE_URLS, true), [options.developmentUrl], false).filter(Boolean)} onMessage={handleMessage} javaScriptEnabled={true} scrollEnabled={!autoHeight} onLoadEnd={function () {
|
|
148
|
-
onReady === null || onReady === void 0 ? void 0 : onReady();
|
|
149
|
-
}} onError={function (e) { return console.error('[SoyioWidget DEBUG] WebView error:', e.nativeEvent); }}/>
|
|
182
|
+
<react_native_webview_1.WebView ref={webViewRef} source={{ uri: webViewUrl }} originWhitelist={__spreadArray(__spreadArray([], constants_1.SOYIO_BASE_URLS, true), [options.developmentUrl], false).filter(Boolean)} onMessage={handleMessage} javaScriptEnabled={true} scrollEnabled={!autoHeight} onLoadEnd={handleLoadEnd} onError={function (e) { return console.error('[SoyioWidget DEBUG] WebView error:', e.nativeEvent); }}/>
|
|
150
183
|
</react_native_1.Animated.View>
|
|
151
184
|
<components_1.Tooltip text={tooltip.text} x={tooltip.x} y={tooltip.y} visible={tooltip.visible} containerWidth={containerWidth}/>
|
|
185
|
+
{showOverlay && loadingContent && (<react_native_1.Animated.View style={[styles.loadingOverlay, { opacity: fadeAnim }, !renderLoading && { backgroundColor: '#FFFFFF' }]}>
|
|
186
|
+
{loadingContent}
|
|
187
|
+
</react_native_1.Animated.View>)}
|
|
152
188
|
</react_native_1.View>);
|
|
153
189
|
};
|
|
154
190
|
exports.SoyioWidget = SoyioWidget;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webview.jsx","sourceRoot":"/","sources":["src/webview.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAEe;AACf,
|
|
1
|
+
{"version":3,"file":"webview.jsx","sourceRoot":"/","sources":["src/webview.tsx"],"names":[],"mappings":"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"}
|