react-native-seel-widget 0.1.8 → 0.1.9
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 +54 -21
- package/package.json +1 -1
- package/src/network/request.ts +16 -19
- package/src/ui/seel-wfp-widget.tsx +1 -0
- package/src/utils/http_util.ts +2 -4
package/README.md
CHANGED
|
@@ -1,37 +1,70 @@
|
|
|
1
1
|
# react-native-seel-widget
|
|
2
2
|
|
|
3
|
-
React
|
|
3
|
+
SeelWidget for React Native (iOS, Android, and Web)
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Installing
|
|
6
6
|
|
|
7
|
+
### With expo
|
|
7
8
|
|
|
8
|
-
```
|
|
9
|
-
|
|
9
|
+
```
|
|
10
|
+
npx expo install react-native-seel-widget
|
|
10
11
|
```
|
|
11
12
|
|
|
13
|
+
### With react-native-cli
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
```js
|
|
17
|
-
import { multiply } from 'react-native-seel-widget';
|
|
18
|
-
|
|
19
|
-
// ...
|
|
15
|
+
1. Install library
|
|
20
16
|
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
```
|
|
18
|
+
yarn add react-native-seel-widget
|
|
19
|
+
```
|
|
23
20
|
|
|
21
|
+
*Note: We're using `yarn` to install deps. Feel free to change commands to use `npm` 11+ and `npx` if you like*
|
|
24
22
|
|
|
25
|
-
|
|
23
|
+
2. Link native code
|
|
26
24
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
```
|
|
26
|
+
cd ios && pod install
|
|
27
|
+
```
|
|
30
28
|
|
|
31
|
-
##
|
|
29
|
+
## Usage
|
|
32
30
|
|
|
33
|
-
|
|
31
|
+
```tsx
|
|
32
|
+
// Step 1
|
|
33
|
+
SeelWidgetSDK.shared.configure({
|
|
34
|
+
apiKey: '5ctiodrhqyfkcjqhli4wwnwi6cakrs5r',
|
|
35
|
+
environment: SeelEnvironment.Development,
|
|
36
|
+
});
|
|
37
|
+
```
|
|
34
38
|
|
|
35
|
-
|
|
39
|
+
```
|
|
40
|
+
// Step 2
|
|
41
|
+
import type { IQuotesRequest, IQuotesResponse } from 'react-native-seel-widget';
|
|
42
|
+
import { SeelWFPWidget } from 'react-native-seel-widget';
|
|
43
|
+
|
|
44
|
+
export default function YourPage() {
|
|
45
|
+
useEffect(() => {
|
|
46
|
+
const request:IQuotesRequest = {
|
|
47
|
+
// ...
|
|
48
|
+
};
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
return (
|
|
52
|
+
<View>
|
|
53
|
+
<SeelWFPWidget
|
|
54
|
+
ref={seelWidgetRef}
|
|
55
|
+
domain={domain}
|
|
56
|
+
onChangeValue={function ({
|
|
57
|
+
optedIn,
|
|
58
|
+
quotesResponse,
|
|
59
|
+
}: {
|
|
60
|
+
optedIn: boolean;
|
|
61
|
+
quotesResponse?: IQuotesResponse;
|
|
62
|
+
}): void {
|
|
63
|
+
console.log(optedIn, quotesResponse);
|
|
64
|
+
}}
|
|
65
|
+
/>
|
|
66
|
+
</View>
|
|
67
|
+
);
|
|
68
|
+
}
|
|
36
69
|
|
|
37
|
-
|
|
70
|
+
```
|
package/package.json
CHANGED
package/src/network/request.ts
CHANGED
|
@@ -15,27 +15,22 @@ export interface GetRequestParams {
|
|
|
15
15
|
[key: string]: any;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
const defaultXSeelApiKey: string = SeelWidgetSDK.shared.apiKey || '';
|
|
19
|
-
const defaultXSeelApiVersion: string = SeelWidgetSDK.shared.apiVersion || '';
|
|
20
|
-
const defaultRequestTimeout: number = SeelWidgetSDK.shared.requestTimeout;
|
|
18
|
+
// const defaultXSeelApiKey: string = SeelWidgetSDK.shared.apiKey || '';
|
|
19
|
+
// const defaultXSeelApiVersion: string = SeelWidgetSDK.shared.apiVersion || '';
|
|
20
|
+
// const defaultRequestTimeout: number = SeelWidgetSDK.shared.requestTimeout;
|
|
21
21
|
|
|
22
22
|
class Request {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
private defaultTimeout: number = defaultRequestTimeout;
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Set default request headers
|
|
34
|
-
*/
|
|
35
|
-
setDefaultHeaders(headers: RequestHeaders): void {
|
|
36
|
-
this.defaultHeaders = { ...this.defaultHeaders, ...headers };
|
|
23
|
+
defaultHeaders(): RequestHeaders {
|
|
24
|
+
return {
|
|
25
|
+
'Accept': 'application/json',
|
|
26
|
+
'Content-Type': 'application/json',
|
|
27
|
+
'X-Seel-API-Key': SeelWidgetSDK.shared.apiKey,
|
|
28
|
+
'X-Seel-API-Version': SeelWidgetSDK.shared.apiVersion,
|
|
29
|
+
};
|
|
37
30
|
}
|
|
38
31
|
|
|
32
|
+
private defaultTimeout: number = SeelWidgetSDK.shared.requestTimeout;
|
|
33
|
+
|
|
39
34
|
/**
|
|
40
35
|
* Set default timeout
|
|
41
36
|
*/
|
|
@@ -91,7 +86,7 @@ class Request {
|
|
|
91
86
|
|
|
92
87
|
// Merge request headers
|
|
93
88
|
const headers = {
|
|
94
|
-
...this.defaultHeaders,
|
|
89
|
+
...this.defaultHeaders(),
|
|
95
90
|
...options?.headers,
|
|
96
91
|
};
|
|
97
92
|
|
|
@@ -143,10 +138,12 @@ class Request {
|
|
|
143
138
|
try {
|
|
144
139
|
// Merge request headers
|
|
145
140
|
const headers = {
|
|
146
|
-
...this.defaultHeaders,
|
|
141
|
+
...this.defaultHeaders(),
|
|
147
142
|
...options?.headers,
|
|
148
143
|
};
|
|
149
144
|
|
|
145
|
+
console.log('headers:', headers);
|
|
146
|
+
|
|
150
147
|
// Build request body
|
|
151
148
|
let body: string | undefined;
|
|
152
149
|
if (data !== undefined && data !== null) {
|
|
@@ -68,6 +68,7 @@ const SeelWFPWidget = (
|
|
|
68
68
|
try {
|
|
69
69
|
setLoadingStatus(NetworkRequestStatueEnum.Loading);
|
|
70
70
|
const response = await createQuote(quote);
|
|
71
|
+
console.log('response quote:', quote);
|
|
71
72
|
setLoadingStatus(NetworkRequestStatueEnum.Success);
|
|
72
73
|
setQuotesResponse(response);
|
|
73
74
|
let _status = response.status ?? '';
|
package/src/utils/http_util.ts
CHANGED
|
@@ -17,14 +17,12 @@ export enum NetworkErrorEnum {
|
|
|
17
17
|
Unknown,
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
const defaultBaseURL: string = SeelWidgetSDK.shared.baseURL;
|
|
21
|
-
|
|
22
20
|
export const createQuote = (body: IQuotesRequest) => {
|
|
23
|
-
const url =
|
|
21
|
+
const url = SeelWidgetSDK.shared.baseURL + '/v1/ecommerce/quotes';
|
|
24
22
|
return post<IQuotesResponse>(url, JSON.stringify(body), {});
|
|
25
23
|
};
|
|
26
24
|
|
|
27
25
|
export const createEvent = (body: IEvents) => {
|
|
28
|
-
const url =
|
|
26
|
+
const url = SeelWidgetSDK.shared.baseURL + '/v1/ecommerce/events';
|
|
29
27
|
return post<IQuotesResponse>(url, JSON.stringify(body), {});
|
|
30
28
|
};
|