@revrag-ai/embed-react-native 1.0.13 → 1.0.14
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/dist/commonjs/api/api.error.js +233 -0
- package/dist/commonjs/api/api.error.js.map +1 -0
- package/dist/commonjs/api/api.js +38 -85
- package/dist/commonjs/api/api.js.map +1 -1
- package/dist/commonjs/components/Embed/EmbedButton.js +41 -20
- package/dist/commonjs/components/Embed/EmbedButton.js.map +1 -1
- package/dist/commonjs/components/styles/EmbedButton.style.js +181 -63
- package/dist/commonjs/components/styles/EmbedButton.style.js.map +1 -1
- package/dist/commonjs/hooks/initialize.js +2 -2
- package/dist/commonjs/hooks/initialize.js.map +1 -1
- package/dist/commonjs/hooks/voiceagent.js +12 -2
- package/dist/commonjs/hooks/voiceagent.js.map +1 -1
- package/dist/module/api/api.error.js +226 -0
- package/dist/module/api/api.error.js.map +1 -0
- package/dist/module/api/api.js +36 -84
- package/dist/module/api/api.js.map +1 -1
- package/dist/module/components/Embed/EmbedButton.js +41 -20
- package/dist/module/components/Embed/EmbedButton.js.map +1 -1
- package/dist/module/components/styles/EmbedButton.style.js +180 -62
- package/dist/module/components/styles/EmbedButton.style.js.map +1 -1
- package/dist/module/hooks/initialize.js +2 -2
- package/dist/module/hooks/initialize.js.map +1 -1
- package/dist/module/hooks/voiceagent.js +12 -2
- package/dist/module/hooks/voiceagent.js.map +1 -1
- package/dist/typescript/src/api/api.d.ts +6 -0
- package/dist/typescript/src/api/api.d.ts.map +1 -1
- package/dist/typescript/src/api/api.error.d.ts +107 -0
- package/dist/typescript/src/api/api.error.d.ts.map +1 -0
- package/dist/typescript/src/api/types/embed.api.types.d.ts.map +1 -1
- package/dist/typescript/src/components/Embed/EmbedButton.d.ts +7 -0
- package/dist/typescript/src/components/Embed/EmbedButton.d.ts.map +1 -1
- package/dist/typescript/src/components/styles/EmbedButton.style.d.ts +50 -0
- package/dist/typescript/src/components/styles/EmbedButton.style.d.ts.map +1 -1
- package/dist/typescript/src/hooks/initialize.d.ts.map +1 -1
- package/dist/typescript/src/hooks/types/voiceAgent.types.d.ts +1 -0
- package/dist/typescript/src/hooks/types/voiceAgent.types.d.ts.map +1 -1
- package/dist/typescript/src/hooks/voiceagent.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_livekitClient","require","_react","_embedEvent","_api","_storeKey","roomInstance","isConnecting","isDisconnecting","hasListeners","connectionAttempts","stableConnectionTimerId","MAX_CONNECTION_ATTEMPTS","getRoomInstance","Room","adaptiveStream","dynacast","publishDefaults","simulcast","resetConnectionAttempts","clearTimeout","resetRoomState","state","ConnectionState","Disconnected","disconnect","finally","e","
|
|
1
|
+
{"version":3,"names":["_livekitClient","require","_react","_embedEvent","_api","_storeKey","roomInstance","isConnecting","isDisconnecting","hasListeners","connectionAttempts","stableConnectionTimerId","MAX_CONNECTION_ATTEMPTS","getRoomInstance","Room","adaptiveStream","dynacast","publishDefaults","simulcast","resetConnectionAttempts","clearTimeout","resetRoomState","state","ConnectionState","Disconnected","disconnect","finally","e","useVoiceAgent","isLoading","setIsLoading","useState","error","setError","tokenDetails","setTokenDetails","isMicMuted","setIsMicMuted","connectionState","setConnectionState","room","setupRoomListeners","handleConnectionChange","Connected","handleTrackSubscribed","track","kind","setVolume","on","Error","message","useEffect","connectToRoom","Connecting","connect","server_url","token","autoSubscribe","err","includes","generateVoiceToken","userData","getAgentData","EventKeys","USER_DATA","apiService","APIService","getInstance","response","getTokenDetails","app_user_id","call_type","data","endCall","muteMic","localParticipant","setMicrophoneEnabled","unmuteMic","cleanup","getPopupDescription","initializeVoiceAgent","roomRef","current","exports"],"sourceRoot":"../../../src","sources":["hooks/voiceagent.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* API Error handling system
|
|
5
|
+
* Centralizes all error handling logic with status codes and definitions
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* HTTP Status Code definitions
|
|
10
|
+
*/
|
|
11
|
+
export const HTTP_STATUS_CODES = {
|
|
12
|
+
// 2xx Success
|
|
13
|
+
200: 'OK',
|
|
14
|
+
201: 'Created',
|
|
15
|
+
204: 'No Content',
|
|
16
|
+
// 4xx Client Errors
|
|
17
|
+
400: 'Bad Request',
|
|
18
|
+
401: 'Unauthorized',
|
|
19
|
+
403: 'Forbidden',
|
|
20
|
+
404: 'Not Found',
|
|
21
|
+
408: 'Request Timeout',
|
|
22
|
+
422: 'Unprocessable Entity',
|
|
23
|
+
429: 'Too Many Requests',
|
|
24
|
+
// 5xx Server Errors
|
|
25
|
+
500: 'Internal Server Error',
|
|
26
|
+
502: 'Bad Gateway',
|
|
27
|
+
503: 'Service Unavailable',
|
|
28
|
+
504: 'Gateway Timeout'
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Predefined error types and their definitions
|
|
33
|
+
*/
|
|
34
|
+
export const ERROR_TYPES = {
|
|
35
|
+
NETWORK: {
|
|
36
|
+
code: 'NETWORK_ERROR',
|
|
37
|
+
message: 'Network request failed. Please check your internet connection and try again.',
|
|
38
|
+
type: 'NETWORK'
|
|
39
|
+
},
|
|
40
|
+
ATS: {
|
|
41
|
+
code: 'ATS_ERROR',
|
|
42
|
+
message: 'Network request blocked by iOS App Transport Security. Please configure ATS exceptions in Info.plist for HTTP endpoints, or use HTTPS instead.',
|
|
43
|
+
type: 'ATS'
|
|
44
|
+
},
|
|
45
|
+
TIMEOUT: {
|
|
46
|
+
code: 'TIMEOUT_ERROR',
|
|
47
|
+
message: 'Request timeout. The API server may be slow to respond or unreachable.',
|
|
48
|
+
type: 'TIMEOUT'
|
|
49
|
+
},
|
|
50
|
+
AUTH: {
|
|
51
|
+
code: 'AUTH_ERROR',
|
|
52
|
+
message: 'Authentication failed. Please check your API credentials.',
|
|
53
|
+
type: 'AUTH'
|
|
54
|
+
},
|
|
55
|
+
SERVER: {
|
|
56
|
+
code: 'SERVER_ERROR',
|
|
57
|
+
message: 'Server error occurred. Please try again later.',
|
|
58
|
+
type: 'SERVER'
|
|
59
|
+
},
|
|
60
|
+
VALIDATION: {
|
|
61
|
+
code: 'VALIDATION_ERROR',
|
|
62
|
+
message: 'Invalid request data. Please check your input.',
|
|
63
|
+
type: 'VALIDATION'
|
|
64
|
+
},
|
|
65
|
+
UNKNOWN: {
|
|
66
|
+
code: 'UNKNOWN_ERROR',
|
|
67
|
+
message: 'An unknown error occurred. Please try again.',
|
|
68
|
+
type: 'UNKNOWN'
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Enhanced error handler that categorizes and formats errors
|
|
74
|
+
*/
|
|
75
|
+
export class ApiErrorHandler {
|
|
76
|
+
/**
|
|
77
|
+
* Handle HTTP response errors
|
|
78
|
+
*/
|
|
79
|
+
static handleHttpError(response, responseData) {
|
|
80
|
+
const statusCode = response.status;
|
|
81
|
+
const statusText = HTTP_STATUS_CODES[statusCode] || 'Unknown Status';
|
|
82
|
+
|
|
83
|
+
// Extract error message from response data if available
|
|
84
|
+
const serverMessage = responseData?.error || responseData?.message || '';
|
|
85
|
+
|
|
86
|
+
// Determine error type based on status code
|
|
87
|
+
let errorType = 'SERVER';
|
|
88
|
+
let code;
|
|
89
|
+
let baseMessage;
|
|
90
|
+
if (statusCode >= 400 && statusCode < 500) {
|
|
91
|
+
if (statusCode === 401 || statusCode === 403) {
|
|
92
|
+
errorType = 'AUTH';
|
|
93
|
+
code = ERROR_TYPES.AUTH.code;
|
|
94
|
+
baseMessage = ERROR_TYPES.AUTH.message;
|
|
95
|
+
} else if (statusCode === 408) {
|
|
96
|
+
errorType = 'TIMEOUT';
|
|
97
|
+
code = ERROR_TYPES.TIMEOUT.code;
|
|
98
|
+
baseMessage = ERROR_TYPES.TIMEOUT.message;
|
|
99
|
+
} else if (statusCode === 422) {
|
|
100
|
+
errorType = 'VALIDATION';
|
|
101
|
+
code = ERROR_TYPES.VALIDATION.code;
|
|
102
|
+
baseMessage = ERROR_TYPES.VALIDATION.message;
|
|
103
|
+
} else {
|
|
104
|
+
errorType = 'VALIDATION';
|
|
105
|
+
code = ERROR_TYPES.VALIDATION.code;
|
|
106
|
+
baseMessage = ERROR_TYPES.VALIDATION.message;
|
|
107
|
+
}
|
|
108
|
+
} else {
|
|
109
|
+
code = ERROR_TYPES.SERVER.code;
|
|
110
|
+
baseMessage = ERROR_TYPES.SERVER.message;
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
code,
|
|
114
|
+
message: serverMessage || `${baseMessage} (${statusCode}: ${statusText})`,
|
|
115
|
+
statusCode,
|
|
116
|
+
details: serverMessage ? `HTTP ${statusCode}: ${statusText}` : undefined,
|
|
117
|
+
type: errorType
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Handle network and other runtime errors
|
|
123
|
+
*/
|
|
124
|
+
static handleRuntimeError(error, apiBaseUrl) {
|
|
125
|
+
const errorMessage = error.message.toLowerCase();
|
|
126
|
+
|
|
127
|
+
// iOS ATS related errors
|
|
128
|
+
if (errorMessage.includes('the resource could not be loaded') || errorMessage.includes('app transport security')) {
|
|
129
|
+
return {
|
|
130
|
+
...ERROR_TYPES.ATS,
|
|
131
|
+
message: `${ERROR_TYPES.ATS.message} Error: ${error.message}`,
|
|
132
|
+
details: `API endpoint: ${apiBaseUrl}`
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// Network connectivity errors
|
|
137
|
+
if (errorMessage.includes('network request failed') || errorMessage.includes('failed to fetch') || errorMessage.includes('fetch')) {
|
|
138
|
+
return {
|
|
139
|
+
...ERROR_TYPES.NETWORK,
|
|
140
|
+
message: `${ERROR_TYPES.NETWORK.message} API endpoint: ${apiBaseUrl}. Error: ${error.message}`,
|
|
141
|
+
details: `Endpoint: ${apiBaseUrl}`
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// Timeout errors
|
|
146
|
+
if (errorMessage.includes('timeout') || errorMessage.includes('aborted')) {
|
|
147
|
+
return {
|
|
148
|
+
...ERROR_TYPES.TIMEOUT,
|
|
149
|
+
message: `${ERROR_TYPES.TIMEOUT.message} Error: ${error.message}`,
|
|
150
|
+
details: `Endpoint: ${apiBaseUrl}`
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// Authentication errors
|
|
155
|
+
if (errorMessage.includes('unauthorized') || errorMessage.includes('authentication') || errorMessage.includes('api key')) {
|
|
156
|
+
return {
|
|
157
|
+
...ERROR_TYPES.AUTH,
|
|
158
|
+
message: `${ERROR_TYPES.AUTH.message} Error: ${error.message}`
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// Default to unknown error
|
|
163
|
+
return {
|
|
164
|
+
...ERROR_TYPES.UNKNOWN,
|
|
165
|
+
message: `${ERROR_TYPES.UNKNOWN.message} Error: ${error.message}`
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Format error for API response
|
|
171
|
+
*/
|
|
172
|
+
static formatErrorResponse(apiError) {
|
|
173
|
+
return {
|
|
174
|
+
success: false,
|
|
175
|
+
error: apiError.message,
|
|
176
|
+
errorCode: apiError.code,
|
|
177
|
+
statusCode: apiError.statusCode,
|
|
178
|
+
type: apiError.type
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Main error processing method
|
|
184
|
+
*/
|
|
185
|
+
static async processApiError(error, response, apiBaseUrl) {
|
|
186
|
+
let apiError;
|
|
187
|
+
if (response && !response.ok) {
|
|
188
|
+
// HTTP error - try to get response data
|
|
189
|
+
let responseData;
|
|
190
|
+
try {
|
|
191
|
+
responseData = await response.json();
|
|
192
|
+
} catch (e) {
|
|
193
|
+
// If JSON parsing fails, use response text or status
|
|
194
|
+
responseData = {
|
|
195
|
+
error: response.statusText
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
apiError = this.handleHttpError(response, responseData);
|
|
199
|
+
} else if (error instanceof Error) {
|
|
200
|
+
// Runtime error
|
|
201
|
+
apiError = this.handleRuntimeError(error, apiBaseUrl);
|
|
202
|
+
} else {
|
|
203
|
+
// Unknown error type
|
|
204
|
+
apiError = {
|
|
205
|
+
...ERROR_TYPES.UNKNOWN,
|
|
206
|
+
message: `${ERROR_TYPES.UNKNOWN.message} Details: ${String(error)}`
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
return this.formatErrorResponse(apiError);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* Convenience function for processing API errors
|
|
215
|
+
*/
|
|
216
|
+
export const processApiError = async (error, response, apiBaseUrl) => {
|
|
217
|
+
return ApiErrorHandler.processApiError(error, response, apiBaseUrl);
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Type guard to check if a response is an error response
|
|
222
|
+
*/
|
|
223
|
+
export const isApiErrorResponse = response => {
|
|
224
|
+
return response && typeof response === 'object' && response.success === false;
|
|
225
|
+
};
|
|
226
|
+
//# sourceMappingURL=api.error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["HTTP_STATUS_CODES","ERROR_TYPES","NETWORK","code","message","type","ATS","TIMEOUT","AUTH","SERVER","VALIDATION","UNKNOWN","ApiErrorHandler","handleHttpError","response","responseData","statusCode","status","statusText","serverMessage","error","errorType","baseMessage","details","undefined","handleRuntimeError","apiBaseUrl","errorMessage","toLowerCase","includes","formatErrorResponse","apiError","success","errorCode","processApiError","ok","json","e","Error","String","isApiErrorResponse"],"sourceRoot":"../../../src","sources":["api/api.error.ts"],"mappings":"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","ignoreList":[]}
|
package/dist/module/api/api.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { getAgentData, setAgentData } from "../store/store.key.js";
|
|
4
|
+
import { processApiError } from "./api.error.js";
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* APIService class that ensures proper initialization before API calls
|
|
@@ -66,50 +67,25 @@ export class APIService {
|
|
|
66
67
|
* @returns Promise with registration response
|
|
67
68
|
*/
|
|
68
69
|
async registerOnInitialize() {
|
|
70
|
+
let response;
|
|
69
71
|
try {
|
|
70
72
|
await this.ensureInitialized();
|
|
71
73
|
const headers = await this.getHeaders();
|
|
72
|
-
|
|
74
|
+
response = await fetch(`${this.apiBaseUrl}/embedded-agent/initialize`, {
|
|
73
75
|
method: 'GET',
|
|
74
76
|
headers: headers
|
|
75
77
|
});
|
|
76
78
|
const data = await response.json();
|
|
77
|
-
await setAgentData(data, '@config_data');
|
|
78
79
|
if (!response.ok) {
|
|
79
|
-
|
|
80
|
-
throw new Error(data.error || 'Registration failed');
|
|
80
|
+
return await processApiError(null, response, this.apiBaseUrl || undefined);
|
|
81
81
|
}
|
|
82
|
+
await setAgentData(data, '@config_data');
|
|
82
83
|
return {
|
|
83
84
|
success: true,
|
|
84
85
|
data: data
|
|
85
86
|
};
|
|
86
87
|
} catch (error) {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
// Enhanced error handling for common iOS network issues
|
|
90
|
-
let errorMessage = 'Unknown error occurred';
|
|
91
|
-
if (error instanceof Error) {
|
|
92
|
-
errorMessage = error.message;
|
|
93
|
-
|
|
94
|
-
// iOS ATS related errors
|
|
95
|
-
if (error.message.includes('The resource could not be loaded') || error.message.includes('App Transport Security')) {
|
|
96
|
-
errorMessage = `Network request blocked by iOS App Transport Security. ` + `Please configure ATS exceptions in Info.plist for HTTP endpoints, ` + `or use HTTPS instead. Error: ${error.message}`;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
// Network connectivity errors
|
|
100
|
-
if (error.message.includes('Network request failed') || error.message.includes('Failed to fetch')) {
|
|
101
|
-
errorMessage = `Network request failed. Please check your internet connection ` + `and ensure the API endpoint (${this.apiBaseUrl}) is accessible. ` + `Error: ${error.message}`;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
// Timeout errors
|
|
105
|
-
if (error.message.includes('timeout')) {
|
|
106
|
-
errorMessage = `Request timeout. The API server may be slow to respond or unreachable. ` + `Error: ${error.message}`;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
return {
|
|
110
|
-
success: false,
|
|
111
|
-
error: errorMessage
|
|
112
|
-
};
|
|
88
|
+
return await processApiError(error, response, this.apiBaseUrl || undefined);
|
|
113
89
|
}
|
|
114
90
|
}
|
|
115
91
|
|
|
@@ -119,50 +95,25 @@ export class APIService {
|
|
|
119
95
|
* @returns Promise with update response
|
|
120
96
|
*/
|
|
121
97
|
async updateUserData(params) {
|
|
98
|
+
let response;
|
|
122
99
|
try {
|
|
123
100
|
await this.ensureInitialized();
|
|
124
101
|
const headers = await this.getHeaders();
|
|
125
|
-
|
|
102
|
+
response = await fetch(`${this.apiBaseUrl}/embedded-agent/user-context/update?app_user_id=${params.data.app_user_id}`, {
|
|
126
103
|
method: 'PUT',
|
|
127
104
|
headers,
|
|
128
105
|
body: JSON.stringify({
|
|
129
106
|
[params.eventKey]: params.data
|
|
130
107
|
})
|
|
131
108
|
});
|
|
132
|
-
const data = await response.json();
|
|
133
109
|
if (!response.ok) {
|
|
134
|
-
|
|
110
|
+
return await processApiError(null, response, this.apiBaseUrl || undefined);
|
|
135
111
|
}
|
|
136
112
|
return {
|
|
137
113
|
success: true
|
|
138
114
|
};
|
|
139
115
|
} catch (error) {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
// Enhanced error handling for common iOS network issues
|
|
143
|
-
let errorMessage = 'Unknown error occurred';
|
|
144
|
-
if (error instanceof Error) {
|
|
145
|
-
errorMessage = error.message;
|
|
146
|
-
|
|
147
|
-
// iOS ATS related errors
|
|
148
|
-
if (error.message.includes('The resource could not be loaded') || error.message.includes('App Transport Security')) {
|
|
149
|
-
errorMessage = `Network request blocked by iOS App Transport Security. ` + `Please configure ATS exceptions in Info.plist for HTTP endpoints, ` + `or use HTTPS instead. Error: ${error.message}`;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
// Network connectivity errors
|
|
153
|
-
if (error.message.includes('Network request failed') || error.message.includes('Failed to fetch')) {
|
|
154
|
-
errorMessage = `Network request failed. Please check your internet connection ` + `and ensure the API endpoint (${this.apiBaseUrl}) is accessible. ` + `Error: ${error.message}`;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
// Timeout errors
|
|
158
|
-
if (error.message.includes('timeout')) {
|
|
159
|
-
errorMessage = `Request timeout. The API server may be slow to respond or unreachable. ` + `Error: ${error.message}`;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
return {
|
|
163
|
-
success: false,
|
|
164
|
-
error: errorMessage
|
|
165
|
-
};
|
|
116
|
+
return await processApiError(error, response, this.apiBaseUrl || undefined);
|
|
166
117
|
}
|
|
167
118
|
}
|
|
168
119
|
|
|
@@ -172,49 +123,46 @@ export class APIService {
|
|
|
172
123
|
* @returns Promise with token details
|
|
173
124
|
*/
|
|
174
125
|
async getTokenDetails(params) {
|
|
126
|
+
let response;
|
|
175
127
|
try {
|
|
176
128
|
await this.ensureInitialized();
|
|
177
129
|
const headers = await this.getHeaders();
|
|
178
|
-
|
|
130
|
+
response = await fetch(`${this.apiBaseUrl}/embedded-agent/token`, {
|
|
179
131
|
method: 'POST',
|
|
180
132
|
headers,
|
|
181
133
|
body: JSON.stringify(params)
|
|
182
134
|
});
|
|
183
135
|
const data = await response.json();
|
|
184
136
|
if (!response.ok) {
|
|
185
|
-
|
|
137
|
+
return await processApiError(null, response, this.apiBaseUrl || undefined);
|
|
186
138
|
}
|
|
187
139
|
return {
|
|
188
140
|
success: true,
|
|
189
141
|
data: data
|
|
190
142
|
};
|
|
191
143
|
} catch (error) {
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
// Timeout errors
|
|
210
|
-
if (error.message.includes('timeout')) {
|
|
211
|
-
errorMessage = `Request timeout. The API server may be slow to respond or unreachable. ` + `Error: ${error.message}`;
|
|
212
|
-
}
|
|
144
|
+
return await processApiError(error, response, this.apiBaseUrl || undefined);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
async getPopupDescription(params) {
|
|
148
|
+
let response;
|
|
149
|
+
try {
|
|
150
|
+
await this.ensureInitialized();
|
|
151
|
+
const headers = await this.getHeaders();
|
|
152
|
+
response = await fetch(`${this.apiBaseUrl}/embedded-agent/dynamic-popup?app_user_id=${params.app_user_id}`, {
|
|
153
|
+
method: 'GET',
|
|
154
|
+
headers
|
|
155
|
+
});
|
|
156
|
+
const data = await response.json();
|
|
157
|
+
if (!response.ok) {
|
|
158
|
+
return await processApiError(null, response, this.apiBaseUrl || undefined);
|
|
213
159
|
}
|
|
214
160
|
return {
|
|
215
|
-
success:
|
|
216
|
-
|
|
161
|
+
success: true,
|
|
162
|
+
data: data
|
|
217
163
|
};
|
|
164
|
+
} catch (error) {
|
|
165
|
+
return await processApiError(error, response, this.apiBaseUrl || undefined);
|
|
218
166
|
}
|
|
219
167
|
}
|
|
220
168
|
}
|
|
@@ -236,4 +184,8 @@ export const getTokenDetails = async params => {
|
|
|
236
184
|
const apiService = APIService.getInstance();
|
|
237
185
|
return await apiService.getTokenDetails(params);
|
|
238
186
|
};
|
|
187
|
+
export const getPopupDescription = async params => {
|
|
188
|
+
const apiService = APIService.getInstance();
|
|
189
|
+
return await apiService.getPopupDescription(params);
|
|
190
|
+
};
|
|
239
191
|
//# sourceMappingURL=api.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getAgentData","setAgentData","APIService","instance","apiBaseUrl","isInitialized","constructor","getInstance","initialize","AgentData","embedUrl","Error","ensureInitialized","getHeaders","apiKey","registerOnInitialize","
|
|
1
|
+
{"version":3,"names":["getAgentData","setAgentData","processApiError","APIService","instance","apiBaseUrl","isInitialized","constructor","getInstance","initialize","AgentData","embedUrl","Error","ensureInitialized","getHeaders","apiKey","registerOnInitialize","response","headers","fetch","method","data","json","ok","undefined","success","error","updateUserData","params","app_user_id","body","JSON","stringify","eventKey","getTokenDetails","getPopupDescription","initializeApi","apiService"],"sourceRoot":"../../../src","sources":["api/api.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -66,7 +66,10 @@ const defaultStyles = {
|
|
|
66
66
|
spacing: {
|
|
67
67
|
SMALL: 10,
|
|
68
68
|
MEDIUM: 15,
|
|
69
|
-
LARGE: 25
|
|
69
|
+
LARGE: 25,
|
|
70
|
+
EXTRA_SMALL: 5,
|
|
71
|
+
EXTRA_LARGE: 35,
|
|
72
|
+
EXTRA_EXTRA_LARGE: 45
|
|
70
73
|
}
|
|
71
74
|
};
|
|
72
75
|
|
|
@@ -91,6 +94,15 @@ const defaultStyles = {
|
|
|
91
94
|
* />
|
|
92
95
|
* ```
|
|
93
96
|
*/
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Generates random sentences for testing or placeholder content
|
|
100
|
+
* @param count - Number of sentences to generate (default: 1)
|
|
101
|
+
* @param minWords - Minimum words per sentence (default: 5)
|
|
102
|
+
* @param maxWords - Maximum words per sentence (default: 15)
|
|
103
|
+
* @returns Array of random sentences
|
|
104
|
+
*/
|
|
105
|
+
|
|
94
106
|
export function EmbedButton() {
|
|
95
107
|
const {
|
|
96
108
|
initializeVoiceAgent,
|
|
@@ -101,10 +113,12 @@ export function EmbedButton() {
|
|
|
101
113
|
muteMic,
|
|
102
114
|
unmuteMic,
|
|
103
115
|
connectionState,
|
|
104
|
-
roomRef
|
|
116
|
+
roomRef,
|
|
117
|
+
getPopupDescription
|
|
105
118
|
} = useVoiceAgent();
|
|
106
119
|
// State management
|
|
107
120
|
const [configData, setConfigData] = useState(null);
|
|
121
|
+
const [popupDescription, setPopupDescription] = useState('');
|
|
108
122
|
const [isOpen, setIsOpen] = useState(false);
|
|
109
123
|
const [callDuration, setCallDuration] = useState(0);
|
|
110
124
|
const timerRef = useRef(null);
|
|
@@ -127,9 +141,16 @@ export function EmbedButton() {
|
|
|
127
141
|
const styles = createEmbedButtonStyles(defaultStyles);
|
|
128
142
|
const [isAutoOpen, setIsAutoOpen] = useState(false);
|
|
129
143
|
useEffect(() => {
|
|
130
|
-
const autoOpenTimer = setTimeout(() => {
|
|
144
|
+
const autoOpenTimer = setTimeout(async () => {
|
|
131
145
|
if (!isOpen) {
|
|
132
|
-
|
|
146
|
+
const response = await getPopupDescription();
|
|
147
|
+
if (response) {
|
|
148
|
+
setPopupDescription(response);
|
|
149
|
+
setIsAutoOpen(true);
|
|
150
|
+
} else {
|
|
151
|
+
// todo: handle no popup description found
|
|
152
|
+
console.warn('No popup description found');
|
|
153
|
+
}
|
|
133
154
|
}
|
|
134
155
|
}, 15000); // 15 seconds
|
|
135
156
|
|
|
@@ -147,7 +168,7 @@ export function EmbedButton() {
|
|
|
147
168
|
const data = await getAgentData('@config_data');
|
|
148
169
|
setConfigData(data?.ui_config);
|
|
149
170
|
} catch (error) {
|
|
150
|
-
|
|
171
|
+
// todo: handle error fetching agent data
|
|
151
172
|
}
|
|
152
173
|
};
|
|
153
174
|
fetchAgentData();
|
|
@@ -354,7 +375,7 @@ export function EmbedButton() {
|
|
|
354
375
|
style: [animatedTextStyles, styles.popupContainer],
|
|
355
376
|
children: /*#__PURE__*/_jsx(Text, {
|
|
356
377
|
style: styles.popupText,
|
|
357
|
-
children:
|
|
378
|
+
children: popupDescription || 'Revrag'
|
|
358
379
|
})
|
|
359
380
|
}), /*#__PURE__*/_jsx(GestureDetector, {
|
|
360
381
|
gesture: gesture,
|
|
@@ -384,13 +405,10 @@ export function EmbedButton() {
|
|
|
384
405
|
onDisconnected: handleEndCall,
|
|
385
406
|
roomRef: roomRef,
|
|
386
407
|
onConnected: handleConnected
|
|
387
|
-
}), /*#__PURE__*/_jsx(
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
style: styles.pressable,
|
|
392
|
-
children: renderIcon()
|
|
393
|
-
})
|
|
408
|
+
}), /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
409
|
+
onPress: handlePress,
|
|
410
|
+
style: styles.pressable,
|
|
411
|
+
children: renderIcon()
|
|
394
412
|
}), isOpen && /*#__PURE__*/_jsxs(View, {
|
|
395
413
|
style: styles.expandedContentContainer,
|
|
396
414
|
children: [/*#__PURE__*/_jsxs(View, {
|
|
@@ -399,7 +417,7 @@ export function EmbedButton() {
|
|
|
399
417
|
style: [styles.agentNameText, styles.leftAlignedText],
|
|
400
418
|
children: configData?.agent_name || 'Revrag'
|
|
401
419
|
}), /*#__PURE__*/_jsx(Text, {
|
|
402
|
-
style: [styles.
|
|
420
|
+
style: [styles.leftAlignedText, styles.statusText],
|
|
403
421
|
children: getStatusText()
|
|
404
422
|
})]
|
|
405
423
|
}), /*#__PURE__*/_jsx(View, {
|
|
@@ -409,12 +427,15 @@ export function EmbedButton() {
|
|
|
409
427
|
})
|
|
410
428
|
}), /*#__PURE__*/_jsxs(View, {
|
|
411
429
|
style: styles.rightContentSection,
|
|
412
|
-
children: [!tokenDetails?.token && /*#__PURE__*/_jsx(
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
style: styles.
|
|
417
|
-
children:
|
|
430
|
+
children: [!tokenDetails?.token && /*#__PURE__*/_jsx(View, {
|
|
431
|
+
style: styles.buttonContainer,
|
|
432
|
+
children: /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
433
|
+
onPress: handleStartCall,
|
|
434
|
+
style: styles.startCallButton,
|
|
435
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
436
|
+
style: styles.startCallText,
|
|
437
|
+
children: configData?.start_call_text || 'Start Call'
|
|
438
|
+
})
|
|
418
439
|
})
|
|
419
440
|
}), tokenDetails?.token && /*#__PURE__*/_jsxs(View, {
|
|
420
441
|
style: styles.buttonContainer,
|