@onairos/react-native 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.
Files changed (130) hide show
  1. package/README.md +334 -0
  2. package/lib/commonjs/components/DataRequestModal.js +176 -0
  3. package/lib/commonjs/components/DataRequestModal.js.map +1 -0
  4. package/lib/commonjs/components/Notification.js +106 -0
  5. package/lib/commonjs/components/Notification.js.map +1 -0
  6. package/lib/commonjs/components/OnairosButton.js +575 -0
  7. package/lib/commonjs/components/OnairosButton.js.map +1 -0
  8. package/lib/commonjs/components/Overlay.js +818 -0
  9. package/lib/commonjs/components/Overlay.js.map +1 -0
  10. package/lib/commonjs/components/UniversalOnboarding.js +173 -0
  11. package/lib/commonjs/components/UniversalOnboarding.js.map +1 -0
  12. package/lib/commonjs/components/onboarding/OAuthWebView.js +137 -0
  13. package/lib/commonjs/components/onboarding/OAuthWebView.js.map +1 -0
  14. package/lib/commonjs/components/onboarding/OnboardingHeader.js +74 -0
  15. package/lib/commonjs/components/onboarding/OnboardingHeader.js.map +1 -0
  16. package/lib/commonjs/components/onboarding/PinInput.js +283 -0
  17. package/lib/commonjs/components/onboarding/PinInput.js.map +1 -0
  18. package/lib/commonjs/components/onboarding/PlatformConnector.js +244 -0
  19. package/lib/commonjs/components/onboarding/PlatformConnector.js.map +1 -0
  20. package/lib/commonjs/components/screens/ConnectorScreen.js +145 -0
  21. package/lib/commonjs/components/screens/ConnectorScreen.js.map +1 -0
  22. package/lib/commonjs/components/screens/LoadingScreen.js +91 -0
  23. package/lib/commonjs/components/screens/LoadingScreen.js.map +1 -0
  24. package/lib/commonjs/components/screens/PinCreationScreen.js +61 -0
  25. package/lib/commonjs/components/screens/PinCreationScreen.js.map +1 -0
  26. package/lib/commonjs/constants/index.js +78 -0
  27. package/lib/commonjs/constants/index.js.map +1 -0
  28. package/lib/commonjs/hooks/useConnections.js +89 -0
  29. package/lib/commonjs/hooks/useConnections.js.map +1 -0
  30. package/lib/commonjs/hooks/useCredentials.js +85 -0
  31. package/lib/commonjs/hooks/useCredentials.js.map +1 -0
  32. package/lib/commonjs/index.js +282 -0
  33. package/lib/commonjs/index.js.map +1 -0
  34. package/lib/commonjs/services/oauthService.js +362 -0
  35. package/lib/commonjs/services/oauthService.js.map +1 -0
  36. package/lib/commonjs/types/declarations.d.js +2 -0
  37. package/lib/commonjs/types/declarations.d.js.map +1 -0
  38. package/lib/commonjs/types/index.js +2 -0
  39. package/lib/commonjs/types/index.js.map +1 -0
  40. package/lib/commonjs/utils/api.js +129 -0
  41. package/lib/commonjs/utils/api.js.map +1 -0
  42. package/lib/commonjs/utils/auth.js +111 -0
  43. package/lib/commonjs/utils/auth.js.map +1 -0
  44. package/lib/commonjs/utils/crypto.js +62 -0
  45. package/lib/commonjs/utils/crypto.js.map +1 -0
  46. package/lib/commonjs/utils/debugHelper.js +64 -0
  47. package/lib/commonjs/utils/debugHelper.js.map +1 -0
  48. package/lib/commonjs/utils/onairosApi.js +270 -0
  49. package/lib/commonjs/utils/onairosApi.js.map +1 -0
  50. package/lib/commonjs/utils/secureStorage.js +210 -0
  51. package/lib/commonjs/utils/secureStorage.js.map +1 -0
  52. package/lib/module/components/DataRequestModal.js +168 -0
  53. package/lib/module/components/DataRequestModal.js.map +1 -0
  54. package/lib/module/components/Notification.js +99 -0
  55. package/lib/module/components/Notification.js.map +1 -0
  56. package/lib/module/components/OnairosButton.js +550 -0
  57. package/lib/module/components/OnairosButton.js.map +1 -0
  58. package/lib/module/components/Overlay.js +825 -0
  59. package/lib/module/components/Overlay.js.map +1 -0
  60. package/lib/module/components/UniversalOnboarding.js +164 -0
  61. package/lib/module/components/UniversalOnboarding.js.map +1 -0
  62. package/lib/module/components/onboarding/OAuthWebView.js +128 -0
  63. package/lib/module/components/onboarding/OAuthWebView.js.map +1 -0
  64. package/lib/module/components/onboarding/OnboardingHeader.js +66 -0
  65. package/lib/module/components/onboarding/OnboardingHeader.js.map +1 -0
  66. package/lib/module/components/onboarding/PinInput.js +274 -0
  67. package/lib/module/components/onboarding/PinInput.js.map +1 -0
  68. package/lib/module/components/onboarding/PlatformConnector.js +235 -0
  69. package/lib/module/components/onboarding/PlatformConnector.js.map +1 -0
  70. package/lib/module/components/screens/ConnectorScreen.js +137 -0
  71. package/lib/module/components/screens/ConnectorScreen.js.map +1 -0
  72. package/lib/module/components/screens/LoadingScreen.js +83 -0
  73. package/lib/module/components/screens/LoadingScreen.js.map +1 -0
  74. package/lib/module/components/screens/PinCreationScreen.js +53 -0
  75. package/lib/module/components/screens/PinCreationScreen.js.map +1 -0
  76. package/lib/module/constants/index.js +72 -0
  77. package/lib/module/constants/index.js.map +1 -0
  78. package/lib/module/hooks/useConnections.js +81 -0
  79. package/lib/module/hooks/useConnections.js.map +1 -0
  80. package/lib/module/hooks/useCredentials.js +77 -0
  81. package/lib/module/hooks/useCredentials.js.map +1 -0
  82. package/lib/module/index.js +34 -0
  83. package/lib/module/index.js.map +1 -0
  84. package/lib/module/services/oauthService.js +352 -0
  85. package/lib/module/services/oauthService.js.map +1 -0
  86. package/lib/module/types/declarations.d.js +2 -0
  87. package/lib/module/types/declarations.d.js.map +1 -0
  88. package/lib/module/types/index.js +2 -0
  89. package/lib/module/types/index.js.map +1 -0
  90. package/lib/module/utils/api.js +117 -0
  91. package/lib/module/utils/api.js.map +1 -0
  92. package/lib/module/utils/auth.js +99 -0
  93. package/lib/module/utils/auth.js.map +1 -0
  94. package/lib/module/utils/crypto.js +54 -0
  95. package/lib/module/utils/crypto.js.map +1 -0
  96. package/lib/module/utils/debugHelper.js +54 -0
  97. package/lib/module/utils/debugHelper.js.map +1 -0
  98. package/lib/module/utils/onairosApi.js +256 -0
  99. package/lib/module/utils/onairosApi.js.map +1 -0
  100. package/lib/module/utils/secureStorage.js +196 -0
  101. package/lib/module/utils/secureStorage.js.map +1 -0
  102. package/package.json +115 -0
  103. package/src/components/DataRequestModal.tsx +187 -0
  104. package/src/components/Notification.js +101 -0
  105. package/src/components/OnairosButton.js +604 -0
  106. package/src/components/OnairosButton.tsx +182 -0
  107. package/src/components/Overlay.js +854 -0
  108. package/src/components/Overlay.tsx +272 -0
  109. package/src/components/UniversalOnboarding.tsx +184 -0
  110. package/src/components/onboarding/OAuthWebView.tsx +134 -0
  111. package/src/components/onboarding/OnboardingHeader.tsx +70 -0
  112. package/src/components/onboarding/PinInput.tsx +356 -0
  113. package/src/components/onboarding/PlatformConnector.tsx +297 -0
  114. package/src/components/screens/ConnectorScreen.tsx +152 -0
  115. package/src/components/screens/LoadingScreen.tsx +100 -0
  116. package/src/components/screens/PinCreationScreen.tsx +67 -0
  117. package/src/constants/index.ts +78 -0
  118. package/src/hooks/useConnections.ts +90 -0
  119. package/src/hooks/useCredentials.ts +83 -0
  120. package/src/index.js +14 -0
  121. package/src/index.ts +82 -0
  122. package/src/services/oauthService.ts +360 -0
  123. package/src/types/declarations.d.ts +26 -0
  124. package/src/types/index.ts +82 -0
  125. package/src/utils/api.js +112 -0
  126. package/src/utils/auth.js +104 -0
  127. package/src/utils/crypto.js +60 -0
  128. package/src/utils/debugHelper.ts +53 -0
  129. package/src/utils/onairosApi.ts +303 -0
  130. package/src/utils/secureStorage.ts +230 -0
@@ -0,0 +1,550 @@
1
+ import React, { useEffect, useState, useRef } from 'react';
2
+ import { TouchableOpacity, Text, View, Image, Platform, StyleSheet } from 'react-native';
3
+ import { Othent } from '@othent/kms-react-native';
4
+ import { rsaEncrypt } from '../utils/crypto';
5
+ import { getPin } from '../utils/auth';
6
+ import Overlay from './Overlay';
7
+ import { sha256 } from 'react-native-crypto-js';
8
+ import AsyncStorage from '@react-native-async-storage/async-storage';
9
+ import axios from 'axios';
10
+ const API_URL = 'https://api2.onairos.uk';
11
+ const OnairosButton = ({
12
+ requestData,
13
+ webpageName,
14
+ inferenceData = null,
15
+ onComplete = null,
16
+ autoFetch = true,
17
+ proofMode = false,
18
+ textLayout = 'below',
19
+ textColor = 'white',
20
+ login = false,
21
+ buttonType = 'pill',
22
+ loginReturn = null,
23
+ loginType = 'signIn',
24
+ visualType = 'full'
25
+ }) => {
26
+ const [userData, setUserData] = useState(null);
27
+ const [showOverlay, setShowOverlay] = useState(false);
28
+ const [activeModels, setActiveModels] = useState([]);
29
+ const [granted, setGranted] = useState(0);
30
+ const [selectedRequests, setSelectedRequests] = useState({});
31
+ const [avatar, setAvatar] = useState(false);
32
+ const [traits, setTraits] = useState(false);
33
+ const [othentUser, setOthentUser] = useState(false);
34
+ const [othentConnected, setOthentConnected] = useState(false);
35
+ const NoAccount = useRef(false);
36
+ const NoModel = useRef(false);
37
+ const [isAuthenticated, setIsAuthenticated] = useState(false);
38
+ const [authToken, setAuthToken] = useState(null);
39
+ const [loading, setLoading] = useState(true);
40
+ const [hashedOthentSub, setHashedOthentSub] = useState(null);
41
+ const [encryptedPin, setEncryptedPin] = useState(null);
42
+ const [accountInfo, setAccountInfo] = useState(null);
43
+ const [isLoading, setIsLoading] = useState(false);
44
+ const [isProcessingAuth, setIsProcessingAuth] = useState(false);
45
+ const hasProcessedCallback = useRef(false);
46
+ const [authError, setAuthError] = useState(null);
47
+ const [notif, setNotif] = useState({
48
+ show: false,
49
+ color: null,
50
+ message: null
51
+ });
52
+
53
+ // The Onairos public key for encryption
54
+ const OnairosPublicKey = `
55
+ -----BEGIN PUBLIC KEY-----
56
+ MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4wkWvRPaJiY8CwQ5BoJI
57
+ amcGAYV91Bk8NrvWq4PXM+J/RJugfgTNCYKQ/c6g4xa1YES/tJEzFS7nf0Kdoqxm
58
+ 5aav0ru5vS4fc4vCOLTI9W1T7nj02NY91rogsQm2/KMxUQ8DaLeTZKi+0Wjsa9YO
59
+ 6XGGd1wh4azgQkj04MWW5J1EBCcBavKoY+C85oA9jkkklQ8nGWgbugmZs7eXHNQb
60
+ qH8/ZHcB9Kx1CZ6XjQuVd6YE/A+swV+DksbkXANcYjr6SY/2TbB8GfpcOMM3bkyN
61
+ Q8e0A51q5a8abfuAkDZXe67MwKMWu/626abwPZhJrKr5HhRZZDwPtnXlktYHhOK6
62
+ lQIDAQAB
63
+ -----END PUBLIC KEY-----
64
+ `;
65
+
66
+ // Find the largest data object based on hierarchy
67
+ const findLargestDataObject = arrayOfObjects => {
68
+ const hierarchy = {
69
+ 'Small': 16,
70
+ 'Medium': 32,
71
+ 'Large': 64
72
+ };
73
+ let largestValue = 0;
74
+ arrayOfObjects.forEach(obj => {
75
+ const currentValue = hierarchy[obj.data];
76
+ if (currentValue > largestValue) {
77
+ largestValue = currentValue;
78
+ }
79
+ });
80
+ return largestValue;
81
+ };
82
+
83
+ // Handle API response for auto-fetch
84
+ useEffect(() => {
85
+ if (autoFetch && inferenceData && typeof onComplete === 'function') {
86
+ // In React Native, we'll handle this differently since we don't have window.addEventListener
87
+ // We'll use the sendDataRequest function to handle this
88
+ }
89
+ }, []);
90
+
91
+ // Handle connection selection
92
+ const handleConnectionSelection = (dataRequester, key, index, type, reward, isSelected) => {
93
+ setSelectedRequests(prev => ({
94
+ ...prev,
95
+ [`${dataRequester}-${key}-${index}`]: {
96
+ type,
97
+ reward,
98
+ isSelected
99
+ }
100
+ }));
101
+ };
102
+
103
+ // Change granted value
104
+ const changeGranted = value => {
105
+ setGranted(prev => Math.max(prev + value, 0));
106
+ };
107
+
108
+ // Handle API request for mobile
109
+ const handleAPIRequestForMobile = async () => {
110
+ setShowOverlay(true);
111
+ return;
112
+ };
113
+
114
+ // Reject data request
115
+ const rejectDataRequest = () => {
116
+ setShowOverlay(false);
117
+ if (onComplete) {
118
+ onComplete('rejected');
119
+ }
120
+ };
121
+
122
+ // Make API call
123
+ const makeApiCall = async (approvedRequests, pin, othentSub) => {
124
+ const jsonData = {
125
+ Info: {
126
+ EncryptedUserPin: pin,
127
+ confirmations: approvedRequests,
128
+ web3Type: 'othent',
129
+ Domain: Platform.OS,
130
+ // Using platform instead of window.location
131
+ proofMode: false,
132
+ OthentSub: othentSub
133
+ }
134
+ };
135
+ try {
136
+ const response = await axios.post(`${API_URL}/getAPIurl`, jsonData);
137
+ const data = response.data;
138
+ if (autoFetch && onComplete) {
139
+ onComplete(data);
140
+ } else {
141
+ // In React Native, we'll handle this differently
142
+ // For now, just call onComplete with the data
143
+ if (onComplete) {
144
+ onComplete(data);
145
+ }
146
+ }
147
+ } catch (error) {
148
+ console.error(error);
149
+ if (onComplete) {
150
+ onComplete(null, error);
151
+ }
152
+ }
153
+ };
154
+
155
+ // Send data request
156
+ const sendDataRequest = async () => {
157
+ if (granted <= 0) return;
158
+ try {
159
+ // Retrieve approved requests
160
+ const approvedRequests = Object.values(selectedRequests).filter(req => req.isSelected).map(req => ({
161
+ type: req.type,
162
+ reward: req.reward
163
+ }));
164
+ if (encryptedPin == null && othentUser && !othentConnected) {
165
+ const appInfo = {
166
+ name: 'Onairos',
167
+ version: '1.0.0',
168
+ env: 'production'
169
+ };
170
+ const othent = new Othent({
171
+ appInfo,
172
+ throwErrors: false
173
+ });
174
+ const userDetails = await othent.connect();
175
+ const hashedSub = sha256(userDetails.sub).toString();
176
+ setHashedOthentSub(hashedSub);
177
+
178
+ // Wait for the pin to be retrieved
179
+ const userOnairosDetails = await getPin(hashedSub);
180
+ const pin = userOnairosDetails.result;
181
+ setEncryptedPin(pin);
182
+ setOthentConnected(true);
183
+
184
+ // Make API call with newly retrieved data
185
+ await makeApiCall(approvedRequests, pin, hashedSub);
186
+ } else {
187
+ // Make API call with existing state
188
+ if (encryptedPin && hashedOthentSub) {
189
+ await makeApiCall(approvedRequests, encryptedPin, hashedOthentSub);
190
+ } else {
191
+ console.error('Missing required authentication data');
192
+ }
193
+ }
194
+ } catch (error) {
195
+ console.error('Error in sendDataRequest:', error);
196
+ } finally {
197
+ setShowOverlay(false);
198
+ }
199
+ };
200
+
201
+ // Validate request data
202
+ const validateRequestData = () => {
203
+ const validKeys = ['Small', 'Medium', 'Large'];
204
+ const requiredProperties = ['type', 'descriptions', 'reward'];
205
+ if (typeof webpageName !== 'string') {
206
+ throw new Error(`Property webpageName must be a String`);
207
+ }
208
+ for (const key of validKeys) {
209
+ if (!(key in requestData)) {
210
+ throw new Error(`Missing key '${key}' in requestData.`);
211
+ }
212
+ for (const prop of requiredProperties) {
213
+ if (!(prop in requestData[key])) {
214
+ throw new Error(`Missing property '${prop}' in requestData.${key}.`);
215
+ }
216
+ if (prop !== 'reward' && typeof requestData[key][prop] !== 'string') {
217
+ throw new Error(`Property '${prop}' in requestData.${key} must be a string.`);
218
+ }
219
+ if (prop !== 'reward' && requestData[key][prop].trim() === '') {
220
+ throw new Error(`Property '${prop}' in requestData.${key} cannot be empty.`);
221
+ }
222
+ }
223
+ }
224
+ };
225
+
226
+ // Validate domain
227
+ const validateDomain = async () => {
228
+ try {
229
+ const response = await axios.post(`${API_URL}/valid/validate-domain`);
230
+ return response.data;
231
+ } catch (error) {
232
+ console.error(error);
233
+ return {
234
+ status: false
235
+ };
236
+ }
237
+ };
238
+
239
+ // Connect to Onairos
240
+ const ConnectOnairos = async () => {
241
+ try {
242
+ const appInfo = {
243
+ name: "Onairos",
244
+ version: "1.0.0",
245
+ env: "production"
246
+ };
247
+ const othent = new Othent({
248
+ appInfo,
249
+ throwErrors: false
250
+ });
251
+
252
+ // Get User Othent Secure Details
253
+ const userDetails = await othent.connect();
254
+ const hashedOthentSub = sha256(userDetails.sub).toString();
255
+ const encryptedPinResponse = await getPin(hashedOthentSub);
256
+
257
+ // Check if user account exists
258
+ if (encryptedPinResponse.result === "No user account") {
259
+ // No user account found, trigger universal onboarding
260
+ console.log("No user account found, triggering universal onboarding");
261
+
262
+ // In React Native, we'll handle this differently
263
+ // For now, just show the overlay for onboarding
264
+ NoAccount.current = true;
265
+ setShowOverlay(true);
266
+ return;
267
+ }
268
+
269
+ // Convert to buffer and decrypt
270
+ const bufferPIN = Buffer.from(encryptedPinResponse.result, 'base64');
271
+ const userPin = await othent.decrypt(bufferPIN);
272
+
273
+ // RSA Encrypt the PIN
274
+ const encryptedData = await rsaEncrypt(OnairosPublicKey, userPin);
275
+
276
+ // In React Native, we'll handle this differently
277
+ // For now, just show the overlay with the data
278
+ setEncryptedPin(encryptedData);
279
+ setHashedOthentSub(hashedOthentSub);
280
+ setShowOverlay(true);
281
+ } catch (e) {
282
+ console.error("Error Connecting to Onairos: ", e);
283
+ }
284
+ };
285
+
286
+ // Fetch account info
287
+ const fetchAccountInfo = async (identifier, isEmail = false) => {
288
+ try {
289
+ setIsLoading(true);
290
+ const jsonData = isEmail ? {
291
+ Info: {
292
+ identifier: identifier
293
+ }
294
+ } : {
295
+ Info: {
296
+ userName: identifier
297
+ }
298
+ };
299
+ const endpoint = isEmail ? '/getAccountInfo/email' : '/getAccountInfo';
300
+ const token = await AsyncStorage.getItem('onairosToken');
301
+ const response = await axios.post(`${API_URL}${endpoint}`, jsonData, {
302
+ headers: {
303
+ 'Content-Type': 'application/json',
304
+ 'Authorization': `Bearer ${token}`
305
+ }
306
+ });
307
+ const data = response.data;
308
+ if (data.AccountInfo === "No Account Found") {
309
+ NoAccount.current = true;
310
+ setAccountInfo(null);
311
+ return null;
312
+ }
313
+ setAccountInfo(data.AccountInfo);
314
+ if (data.AccountInfo.models) {
315
+ setActiveModels(data.AccountInfo.models);
316
+ } else {
317
+ NoModel.current = true;
318
+ }
319
+ if (data.AccountInfo.avatar) {
320
+ setAvatar(true);
321
+ }
322
+ if (data.AccountInfo.UserTraits) {
323
+ setTraits(true);
324
+ }
325
+ if (data.AccountInfo.othent) {
326
+ setOthentUser(true);
327
+ }
328
+ return data.AccountInfo;
329
+ } catch (error) {
330
+ console.error('Error fetching account info:', error);
331
+ throw error;
332
+ } finally {
333
+ setIsLoading(false);
334
+ }
335
+ };
336
+
337
+ // Check existing token
338
+ const checkExistingToken = async () => {
339
+ try {
340
+ const onairosToken = await AsyncStorage.getItem('onairosToken');
341
+ const legacyToken = await AsyncStorage.getItem('token');
342
+ const token = onairosToken || legacyToken;
343
+ if (token) {
344
+ const response = await axios.get(`${API_URL}/verifyToken`, {
345
+ headers: {
346
+ 'Authorization': `Bearer ${token}`
347
+ }
348
+ });
349
+ if (response.status === 200) {
350
+ const data = response.data;
351
+ if (data.valid) {
352
+ setAuthToken(token);
353
+ setIsAuthenticated(true);
354
+ const username = await AsyncStorage.getItem('username');
355
+ await fetchAccountInfo(username);
356
+ } else {
357
+ await AsyncStorage.removeItem('onairosToken');
358
+ await AsyncStorage.removeItem('token');
359
+ }
360
+ }
361
+ }
362
+ } catch (error) {
363
+ console.error('Token verification failed:', error);
364
+ } finally {
365
+ setLoading(false);
366
+ }
367
+ };
368
+
369
+ // Check for existing token on mount
370
+ useEffect(() => {
371
+ checkExistingToken();
372
+ }, []);
373
+
374
+ // Handle close overlay
375
+ const handleCloseOverlay = () => {
376
+ setGranted(0);
377
+ setShowOverlay(false);
378
+ };
379
+
380
+ // Check for existing token and fetch account info on mount
381
+ useEffect(() => {
382
+ const checkStoredAuth = async () => {
383
+ const token = await AsyncStorage.getItem('onairosToken');
384
+ const username = await AsyncStorage.getItem('username');
385
+ const othentToken = await AsyncStorage.getItem('othentToken');
386
+ if (token) {
387
+ try {
388
+ // Verify token is still valid
389
+ const response = await axios.post(`${API_URL}/verifyToken`, {}, {
390
+ headers: {
391
+ 'Content-Type': 'application/json',
392
+ 'Authorization': `Bearer ${token}`
393
+ }
394
+ });
395
+ if (response.status === 200) {
396
+ setIsAuthenticated(true);
397
+ if (username) {
398
+ await fetchAccountInfo(username, false);
399
+ } else if (othentToken) {
400
+ // Handle Othent stored session
401
+ const userDetails = JSON.parse(othentToken);
402
+ await fetchAccountInfo(userDetails.email, true);
403
+ }
404
+ } else {
405
+ // Clear invalid tokens
406
+ await AsyncStorage.removeItem('onairosToken');
407
+ await AsyncStorage.removeItem('username');
408
+ await AsyncStorage.removeItem('othentToken');
409
+ }
410
+ } catch (error) {
411
+ console.error('Token verification failed:', error);
412
+ }
413
+ }
414
+ };
415
+ checkStoredAuth();
416
+ }, []);
417
+
418
+ // Handle login success
419
+ const handleLoginSuccess = async (identifier, isEmail = false) => {
420
+ try {
421
+ const accountData = await fetchAccountInfo(identifier, isEmail);
422
+ // Update authentication first
423
+ setIsAuthenticated(true);
424
+ // Then update account info
425
+ setShowOverlay(true);
426
+ return accountData;
427
+ } catch (error) {
428
+ console.error('Login process failed:', error);
429
+ throw error;
430
+ }
431
+ };
432
+
433
+ // Get text based on login type
434
+ const getText = () => {
435
+ switch (loginType) {
436
+ case 'signUp':
437
+ return 'Sign Up with Onairos';
438
+ case 'signOut':
439
+ return 'Sign Out of Onairos';
440
+ default:
441
+ return 'Sign In with Onairos';
442
+ }
443
+ };
444
+
445
+ // Button press handler
446
+ const handleButtonPress = () => {
447
+ handleAPIRequestForMobile();
448
+ };
449
+ return /*#__PURE__*/React.createElement(View, {
450
+ style: styles.container
451
+ }, /*#__PURE__*/React.createElement(TouchableOpacity, {
452
+ style: [styles.button, buttonType === 'pill' ? styles.pillButton : styles.circleButton, login ? styles.loginButton : styles.transparentButton, {
453
+ flexDirection: textLayout === 'below' ? 'column' : 'row'
454
+ }],
455
+ onPress: handleButtonPress
456
+ }, (visualType === 'full' || visualType === 'icon') && /*#__PURE__*/React.createElement(Image, {
457
+ source: {
458
+ uri: login ? "https://onairos.sirv.com/Images/OnairosWhite.png" : "https://onairos.sirv.com/Images/OnairosBlack.png"
459
+ },
460
+ style: [styles.logo, buttonType === 'pill' ? styles.pillLogo : styles.circleLogo, visualType === 'full' ? styles.fullLogo : styles.iconOnlyLogo]
461
+ }), (visualType === 'full' || visualType === 'textOnly') && /*#__PURE__*/React.createElement(Text, {
462
+ style: [styles.buttonText, {
463
+ color: login ? 'black' : textColor === 'black' ? 'black' : 'white'
464
+ }, textLayout === 'right' ? styles.textRight : textLayout === 'left' ? styles.textLeft : styles.textBelow]
465
+ }, getText())), showOverlay && !isLoading && /*#__PURE__*/React.createElement(Overlay, {
466
+ setOthentConnected: setOthentConnected,
467
+ dataRequester: webpageName,
468
+ NoAccount: NoAccount,
469
+ NoModel: NoModel,
470
+ accountInfo: accountInfo,
471
+ activeModels: activeModels,
472
+ avatar: avatar,
473
+ traits: traits,
474
+ requestData: requestData,
475
+ handleConnectionSelection: handleConnectionSelection,
476
+ changeGranted: changeGranted,
477
+ granted: granted,
478
+ allowSubmit: granted > 0,
479
+ rejectDataRequest: rejectDataRequest,
480
+ sendDataRequest: sendDataRequest,
481
+ isAuthenticated: isAuthenticated,
482
+ onLoginSuccess: handleLoginSuccess,
483
+ onClose: handleCloseOverlay,
484
+ setOthentUser: setOthentUser,
485
+ setHashedOthentSub: setHashedOthentSub,
486
+ setEncryptedPin: setEncryptedPin
487
+ }));
488
+ };
489
+ const styles = StyleSheet.create({
490
+ container: {
491
+ alignItems: 'center',
492
+ justifyContent: 'center'
493
+ },
494
+ button: {
495
+ alignItems: 'center',
496
+ justifyContent: 'center',
497
+ borderRadius: 8
498
+ },
499
+ pillButton: {
500
+ paddingHorizontal: 16,
501
+ paddingVertical: 8,
502
+ borderRadius: 20
503
+ },
504
+ circleButton: {
505
+ width: 48,
506
+ height: 48,
507
+ borderRadius: 24
508
+ },
509
+ loginButton: {
510
+ backgroundColor: '#ffffff',
511
+ borderWidth: 1,
512
+ borderColor: '#dddddd'
513
+ },
514
+ transparentButton: {
515
+ backgroundColor: 'transparent',
516
+ borderWidth: 1,
517
+ borderColor: 'transparent'
518
+ },
519
+ logo: {
520
+ resizeMode: 'contain'
521
+ },
522
+ pillLogo: {
523
+ width: 24,
524
+ height: 24
525
+ },
526
+ circleLogo: {
527
+ width: 32,
528
+ height: 32
529
+ },
530
+ fullLogo: {
531
+ marginRight: 12
532
+ },
533
+ iconOnlyLogo: {
534
+ marginRight: 0
535
+ },
536
+ buttonText: {
537
+ fontWeight: 'bold'
538
+ },
539
+ textRight: {
540
+ marginLeft: 8
541
+ },
542
+ textLeft: {
543
+ marginRight: 8
544
+ },
545
+ textBelow: {
546
+ marginTop: 4
547
+ }
548
+ });
549
+ export default OnairosButton;
550
+ //# sourceMappingURL=OnairosButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useEffect","useState","useRef","TouchableOpacity","Text","View","Image","Platform","StyleSheet","Othent","rsaEncrypt","getPin","Overlay","sha256","AsyncStorage","axios","API_URL","OnairosButton","requestData","webpageName","inferenceData","onComplete","autoFetch","proofMode","textLayout","textColor","login","buttonType","loginReturn","loginType","visualType","userData","setUserData","showOverlay","setShowOverlay","activeModels","setActiveModels","granted","setGranted","selectedRequests","setSelectedRequests","avatar","setAvatar","traits","setTraits","othentUser","setOthentUser","othentConnected","setOthentConnected","NoAccount","NoModel","isAuthenticated","setIsAuthenticated","authToken","setAuthToken","loading","setLoading","hashedOthentSub","setHashedOthentSub","encryptedPin","setEncryptedPin","accountInfo","setAccountInfo","isLoading","setIsLoading","isProcessingAuth","setIsProcessingAuth","hasProcessedCallback","authError","setAuthError","notif","setNotif","show","color","message","OnairosPublicKey","findLargestDataObject","arrayOfObjects","hierarchy","largestValue","forEach","obj","currentValue","data","handleConnectionSelection","dataRequester","key","index","type","reward","isSelected","prev","changeGranted","value","Math","max","handleAPIRequestForMobile","rejectDataRequest","makeApiCall","approvedRequests","pin","othentSub","jsonData","Info","EncryptedUserPin","confirmations","web3Type","Domain","OS","OthentSub","response","post","error","console","sendDataRequest","Object","values","filter","req","map","appInfo","name","version","env","othent","throwErrors","userDetails","connect","hashedSub","sub","toString","userOnairosDetails","result","validateRequestData","validKeys","requiredProperties","Error","prop","trim","validateDomain","status","ConnectOnairos","encryptedPinResponse","log","current","bufferPIN","Buffer","from","userPin","decrypt","encryptedData","e","fetchAccountInfo","identifier","isEmail","userName","endpoint","token","getItem","headers","AccountInfo","models","UserTraits","checkExistingToken","onairosToken","legacyToken","get","valid","username","removeItem","handleCloseOverlay","checkStoredAuth","othentToken","JSON","parse","email","handleLoginSuccess","accountData","getText","handleButtonPress","createElement","style","styles","container","button","pillButton","circleButton","loginButton","transparentButton","flexDirection","onPress","source","uri","logo","pillLogo","circleLogo","fullLogo","iconOnlyLogo","buttonText","textRight","textLeft","textBelow","allowSubmit","onLoginSuccess","onClose","create","alignItems","justifyContent","borderRadius","paddingHorizontal","paddingVertical","width","height","backgroundColor","borderWidth","borderColor","resizeMode","marginRight","fontWeight","marginLeft","marginTop"],"sourceRoot":"..\\..\\..\\src","sources":["components/OnairosButton.js"],"mappings":"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","ignoreList":[]}