@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,117 @@
1
+ import axios from 'axios';
2
+ import AsyncStorage from '@react-native-async-storage/async-storage';
3
+ const API_URL = 'https://api2.onairos.uk';
4
+
5
+ /**
6
+ * Create an API instance with authorization headers
7
+ * @returns {Promise<Object>} - The axios instance
8
+ */
9
+ export const createApiInstance = async () => {
10
+ const token = await AsyncStorage.getItem('onairosToken');
11
+ return axios.create({
12
+ baseURL: API_URL,
13
+ headers: {
14
+ 'Content-Type': 'application/json',
15
+ ...(token ? {
16
+ 'Authorization': `Bearer ${token}`
17
+ } : {})
18
+ }
19
+ });
20
+ };
21
+
22
+ /**
23
+ * Validate the domain with the Onairos API
24
+ * @returns {Promise<Object>} - The validation response
25
+ */
26
+ export const validateDomain = async () => {
27
+ try {
28
+ const api = await createApiInstance();
29
+ const response = await api.post('/valid/validate-domain');
30
+ return response.data;
31
+ } catch (error) {
32
+ console.error('Error validating domain:', error);
33
+ return {
34
+ status: false
35
+ };
36
+ }
37
+ };
38
+
39
+ /**
40
+ * Fetch account information
41
+ * @param {string} identifier - The username or email
42
+ * @param {boolean} isEmail - Whether the identifier is an email
43
+ * @returns {Promise<Object>} - The account information
44
+ */
45
+ export const fetchAccountInfo = async (identifier, isEmail = false) => {
46
+ try {
47
+ const api = await createApiInstance();
48
+ const jsonData = isEmail ? {
49
+ Info: {
50
+ identifier
51
+ }
52
+ } : {
53
+ Info: {
54
+ userName: identifier
55
+ }
56
+ };
57
+ const endpoint = isEmail ? '/getAccountInfo/email' : '/getAccountInfo';
58
+ const response = await api.post(endpoint, jsonData);
59
+ return response.data;
60
+ } catch (error) {
61
+ console.error('Error fetching account info:', error);
62
+ throw error;
63
+ }
64
+ };
65
+
66
+ /**
67
+ * Get API URL for data requests
68
+ * @param {Array} approvedRequests - The approved data requests
69
+ * @param {string} pin - The encrypted PIN
70
+ * @param {string} othentSub - The hashed Othent sub
71
+ * @returns {Promise<Object>} - The API URL response
72
+ */
73
+ export const getApiUrl = async (approvedRequests, pin, othentSub) => {
74
+ try {
75
+ const api = await createApiInstance();
76
+ const jsonData = {
77
+ Info: {
78
+ EncryptedUserPin: pin,
79
+ confirmations: approvedRequests,
80
+ web3Type: 'othent',
81
+ Domain: Platform.OS,
82
+ proofMode: false,
83
+ OthentSub: othentSub
84
+ }
85
+ };
86
+ const response = await api.post('/getAPIurl', jsonData);
87
+ return response.data;
88
+ } catch (error) {
89
+ console.error('Error getting API URL:', error);
90
+ throw error;
91
+ }
92
+ };
93
+
94
+ /**
95
+ * Create a new user account
96
+ * @param {string} othentSub - The hashed Othent sub
97
+ * @param {string} pin - The PIN
98
+ * @param {Array} socialAccounts - The selected social accounts
99
+ * @param {string} email - The user's email
100
+ * @returns {Promise<Object>} - The account creation response
101
+ */
102
+ export const createAccount = async (othentSub, pin, socialAccounts, email) => {
103
+ try {
104
+ const api = await createApiInstance();
105
+ const response = await api.post('/createAccount', {
106
+ othentSub,
107
+ pin,
108
+ socialAccounts,
109
+ email
110
+ });
111
+ return response.data;
112
+ } catch (error) {
113
+ console.error('Error creating account:', error);
114
+ throw error;
115
+ }
116
+ };
117
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["axios","AsyncStorage","API_URL","createApiInstance","token","getItem","create","baseURL","headers","validateDomain","api","response","post","data","error","console","status","fetchAccountInfo","identifier","isEmail","jsonData","Info","userName","endpoint","getApiUrl","approvedRequests","pin","othentSub","EncryptedUserPin","confirmations","web3Type","Domain","Platform","OS","proofMode","OthentSub","createAccount","socialAccounts","email"],"sourceRoot":"..\\..\\..\\src","sources":["utils/api.js"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,99 @@
1
+ import axios from 'axios';
2
+ import AsyncStorage from '@react-native-async-storage/async-storage';
3
+ const API_URL = 'https://api2.onairos.uk';
4
+
5
+ /**
6
+ * Get the encrypted PIN for a user
7
+ * @param {string} hashedOthentSub - The hashed Othent sub
8
+ * @returns {Promise<Object>} - The response containing the encrypted PIN
9
+ */
10
+ export const getPin = async hashedOthentSub => {
11
+ try {
12
+ const response = await axios.post(`${API_URL}/getPin`, {
13
+ hashedOthentSub
14
+ });
15
+ return response.data;
16
+ } catch (error) {
17
+ console.error('Error getting PIN:', error);
18
+ throw error;
19
+ }
20
+ };
21
+
22
+ /**
23
+ * Verify a token with the Onairos API
24
+ * @param {string} token - The token to verify
25
+ * @returns {Promise<boolean>} - Whether the token is valid
26
+ */
27
+ export const verifyToken = async token => {
28
+ try {
29
+ const response = await axios.post(`${API_URL}/verifyToken`, {}, {
30
+ headers: {
31
+ 'Authorization': `Bearer ${token}`
32
+ }
33
+ });
34
+ return response.data.valid;
35
+ } catch (error) {
36
+ console.error('Error verifying token:', error);
37
+ return false;
38
+ }
39
+ };
40
+
41
+ /**
42
+ * Store authentication data
43
+ * @param {string} token - The authentication token
44
+ * @param {string} username - The username
45
+ * @param {Object} othentData - The Othent user data
46
+ */
47
+ export const storeAuthData = async (token, username = null, othentData = null) => {
48
+ try {
49
+ await AsyncStorage.setItem('onairosToken', token);
50
+ if (username) {
51
+ await AsyncStorage.setItem('username', username);
52
+ }
53
+ if (othentData) {
54
+ await AsyncStorage.setItem('othentToken', JSON.stringify(othentData));
55
+ }
56
+ } catch (error) {
57
+ console.error('Error storing auth data:', error);
58
+ throw error;
59
+ }
60
+ };
61
+
62
+ /**
63
+ * Clear authentication data
64
+ */
65
+ export const clearAuthData = async () => {
66
+ try {
67
+ await AsyncStorage.removeItem('onairosToken');
68
+ await AsyncStorage.removeItem('username');
69
+ await AsyncStorage.removeItem('othentToken');
70
+ } catch (error) {
71
+ console.error('Error clearing auth data:', error);
72
+ throw error;
73
+ }
74
+ };
75
+
76
+ /**
77
+ * Get stored authentication data
78
+ * @returns {Promise<Object>} - The stored authentication data
79
+ */
80
+ export const getStoredAuthData = async () => {
81
+ try {
82
+ const token = await AsyncStorage.getItem('onairosToken');
83
+ const username = await AsyncStorage.getItem('username');
84
+ const othentToken = await AsyncStorage.getItem('othentToken');
85
+ return {
86
+ token,
87
+ username,
88
+ othentToken: othentToken ? JSON.parse(othentToken) : null
89
+ };
90
+ } catch (error) {
91
+ console.error('Error getting stored auth data:', error);
92
+ return {
93
+ token: null,
94
+ username: null,
95
+ othentToken: null
96
+ };
97
+ }
98
+ };
99
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["axios","AsyncStorage","API_URL","getPin","hashedOthentSub","response","post","data","error","console","verifyToken","token","headers","valid","storeAuthData","username","othentData","setItem","JSON","stringify","clearAuthData","removeItem","getStoredAuthData","getItem","othentToken","parse"],"sourceRoot":"..\\..\\..\\src","sources":["utils/auth.js"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,54 @@
1
+ import { RSA } from 'react-native-rsa-native';
2
+ import { sha256 as cryptoSha256 } from 'react-native-crypto-js';
3
+
4
+ /**
5
+ * Encrypt data using RSA
6
+ * @param {string} publicKey - The RSA public key
7
+ * @param {string} data - The data to encrypt
8
+ * @returns {Promise<string>} - The encrypted data
9
+ */
10
+ export const rsaEncrypt = async (publicKey, data) => {
11
+ try {
12
+ // Clean the public key format
13
+ const cleanedKey = publicKey.replace(/\\n/g, '').replace(/^\s+|\s+$/g, '').replace('-----BEGIN PUBLIC KEY-----', '').replace('-----END PUBLIC KEY-----', '').trim();
14
+
15
+ // Format the key properly for the library
16
+ const formattedKey = `-----BEGIN PUBLIC KEY-----\n${cleanedKey}\n-----END PUBLIC KEY-----`;
17
+
18
+ // Encrypt the data
19
+ const encrypted = await RSA.encrypt(data, formattedKey);
20
+ return encrypted;
21
+ } catch (error) {
22
+ console.error('RSA encryption failed:', error);
23
+ throw error;
24
+ }
25
+ };
26
+
27
+ /**
28
+ * Hash data using SHA-256
29
+ * @param {string} data - The data to hash
30
+ * @returns {string} - The hashed data
31
+ */
32
+ export const sha256 = data => {
33
+ return cryptoSha256(data).toString();
34
+ };
35
+
36
+ /**
37
+ * Convert a base64 string to a buffer
38
+ * @param {string} base64String - The base64 string to convert
39
+ * @returns {ArrayBuffer} - The converted buffer
40
+ */
41
+ export const base64ToBuffer = base64String => {
42
+ try {
43
+ const binaryString = Buffer.from(base64String, 'base64').toString('binary');
44
+ const bytes = new Uint8Array(binaryString.length);
45
+ for (let i = 0; i < binaryString.length; i++) {
46
+ bytes[i] = binaryString.charCodeAt(i);
47
+ }
48
+ return bytes.buffer;
49
+ } catch (error) {
50
+ console.error('Error converting base64 to buffer:', error);
51
+ throw error;
52
+ }
53
+ };
54
+ //# sourceMappingURL=crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["RSA","sha256","cryptoSha256","rsaEncrypt","publicKey","data","cleanedKey","replace","trim","formattedKey","encrypted","encrypt","error","console","toString","base64ToBuffer","base64String","binaryString","Buffer","from","bytes","Uint8Array","length","i","charCodeAt","buffer"],"sourceRoot":"..\\..\\..\\src","sources":["utils/crypto.js"],"mappings":"AAAA,SAASA,GAAG,QAAQ,yBAAyB;AAC7C,SAASC,MAAM,IAAIC,YAAY,QAAQ,wBAAwB;;AAE/D;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,UAAU,GAAG,MAAAA,CAAOC,SAAS,EAAEC,IAAI,KAAK;EACnD,IAAI;IACF;IACA,MAAMC,UAAU,GAAGF,SAAS,CACzBG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CACnBA,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CACzBA,OAAO,CAAC,4BAA4B,EAAE,EAAE,CAAC,CACzCA,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,CACvCC,IAAI,CAAC,CAAC;;IAET;IACA,MAAMC,YAAY,GAAG,+BAA+BH,UAAU,4BAA4B;;IAE1F;IACA,MAAMI,SAAS,GAAG,MAAMV,GAAG,CAACW,OAAO,CAACN,IAAI,EAAEI,YAAY,CAAC;IACvD,OAAOC,SAAS;EAClB,CAAC,CAAC,OAAOE,KAAK,EAAE;IACdC,OAAO,CAACD,KAAK,CAAC,wBAAwB,EAAEA,KAAK,CAAC;IAC9C,MAAMA,KAAK;EACb;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMX,MAAM,GAAII,IAAI,IAAK;EAC9B,OAAOH,YAAY,CAACG,IAAI,CAAC,CAACS,QAAQ,CAAC,CAAC;AACtC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,cAAc,GAAIC,YAAY,IAAK;EAC9C,IAAI;IACF,MAAMC,YAAY,GAAGC,MAAM,CAACC,IAAI,CAACH,YAAY,EAAE,QAAQ,CAAC,CAACF,QAAQ,CAAC,QAAQ,CAAC;IAC3E,MAAMM,KAAK,GAAG,IAAIC,UAAU,CAACJ,YAAY,CAACK,MAAM,CAAC;IAEjD,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGN,YAAY,CAACK,MAAM,EAAEC,CAAC,EAAE,EAAE;MAC5CH,KAAK,CAACG,CAAC,CAAC,GAAGN,YAAY,CAACO,UAAU,CAACD,CAAC,CAAC;IACvC;IAEA,OAAOH,KAAK,CAACK,MAAM;EACrB,CAAC,CAAC,OAAOb,KAAK,EAAE;IACdC,OAAO,CAACD,KAAK,CAAC,oCAAoC,EAAEA,KAAK,CAAC;IAC1D,MAAMA,KAAK;EACb;AACF,CAAC","ignoreList":[]}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Debug utility functions for Onairos React Native SDK
3
+ */
4
+
5
+ // Determine if we're in dev mode
6
+ const __DEV__ = process.env.NODE_ENV !== 'production';
7
+
8
+ /**
9
+ * Log debug message to console when in development mode
10
+ * @param label Label for the debug message
11
+ * @param data Data to log
12
+ */
13
+ export const logDebug = (label, data) => {
14
+ if (__DEV__) {
15
+ console.log(`[Onairos Debug] ${label}:`, data || '');
16
+ }
17
+ };
18
+
19
+ /**
20
+ * Log error message to console
21
+ * @param label Label for the error message
22
+ * @param error Error object or message
23
+ */
24
+ export const logError = (label, error) => {
25
+ if (__DEV__) {
26
+ console.error(`[Onairos Error] ${label}:`, error);
27
+ }
28
+ };
29
+
30
+ /**
31
+ * Check if debug mode is enabled
32
+ * @param debug Debug flag passed to component
33
+ * @returns Whether debug mode is enabled
34
+ */
35
+ export const isDebugMode = debug => {
36
+ return debug === true || __DEV__;
37
+ };
38
+
39
+ /**
40
+ * Format and log API request details
41
+ * @param method HTTP method
42
+ * @param url API URL
43
+ * @param data Request data
44
+ */
45
+ export const logApiRequest = (method, url, data) => {
46
+ if (__DEV__) {
47
+ logDebug('API Request', {
48
+ method,
49
+ url,
50
+ data: data || {}
51
+ });
52
+ }
53
+ };
54
+ //# sourceMappingURL=debugHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__DEV__","process","env","NODE_ENV","logDebug","label","data","console","log","logError","error","isDebugMode","debug","logApiRequest","method","url"],"sourceRoot":"..\\..\\..\\src","sources":["utils/debugHelper.ts"],"mappings":"AAAA;AACA;AACA;;AAEA;AACA,MAAMA,OAAO,GAAGC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY;;AAErD;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,QAAQ,GAAGA,CAACC,KAAa,EAAEC,IAAU,KAAW;EAC3D,IAAIN,OAAO,EAAE;IACXO,OAAO,CAACC,GAAG,CAAC,mBAAmBH,KAAK,GAAG,EAAEC,IAAI,IAAI,EAAE,CAAC;EACtD;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMG,QAAQ,GAAGA,CAACJ,KAAa,EAAEK,KAAU,KAAW;EAC3D,IAAIV,OAAO,EAAE;IACXO,OAAO,CAACG,KAAK,CAAC,mBAAmBL,KAAK,GAAG,EAAEK,KAAK,CAAC;EACnD;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,WAAW,GAAIC,KAAe,IAAc;EACvD,OAAOA,KAAK,KAAK,IAAI,IAAIZ,OAAO;AAClC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMa,aAAa,GAAGA,CAACC,MAAc,EAAEC,GAAW,EAAET,IAAU,KAAW;EAC9E,IAAIN,OAAO,EAAE;IACXI,QAAQ,CAAC,aAAa,EAAE;MACtBU,MAAM;MACNC,GAAG;MACHT,IAAI,EAAEA,IAAI,IAAI,CAAC;IACjB,CAAC,CAAC;EACJ;AACF,CAAC","ignoreList":[]}
@@ -0,0 +1,256 @@
1
+ import { Platform } from 'react-native';
2
+ import NetInfo from '@react-native-community/netinfo';
3
+ import { logDebug } from './debugHelper';
4
+
5
+ // API configuration
6
+ const API_CONFIG = {
7
+ baseUrl: 'https://api2.onairos.uk',
8
+ version: 'v1',
9
+ timeout: 30000 // 30 seconds
10
+ };
11
+
12
+ // API response types
13
+
14
+ // Error types
15
+
16
+ // API error structure
17
+ export class ApiError extends Error {
18
+ constructor(message, type, code, details) {
19
+ super(message);
20
+ this.type = type;
21
+ this.code = code;
22
+ this.details = details;
23
+ this.name = 'ApiError';
24
+ }
25
+ }
26
+
27
+ /**
28
+ * Check if the device has an active network connection
29
+ */
30
+ const checkNetworkConnection = async () => {
31
+ const networkState = await NetInfo.fetch();
32
+ return networkState.isConnected === true;
33
+ };
34
+
35
+ /**
36
+ * Build API request headers
37
+ */
38
+ const buildHeaders = (accessToken, additionalHeaders = {}) => {
39
+ const headers = {
40
+ 'Content-Type': 'application/json',
41
+ 'Accept': 'application/json',
42
+ 'User-Agent': `OnairosReactNative/${Platform.OS}/${Platform.Version}`,
43
+ ...additionalHeaders
44
+ };
45
+ if (accessToken) {
46
+ headers['Authorization'] = `Bearer ${accessToken}`;
47
+ }
48
+ return headers;
49
+ };
50
+
51
+ /**
52
+ * Make API request with proper error handling
53
+ */
54
+ const apiRequest = async (endpoint, method, options = {}) => {
55
+ const {
56
+ data,
57
+ accessToken,
58
+ headers = {},
59
+ timeout = API_CONFIG.timeout,
60
+ debug = false
61
+ } = options;
62
+ try {
63
+ // Check for network connectivity
64
+ const isConnected = await checkNetworkConnection();
65
+ if (!isConnected) {
66
+ throw new ApiError('No network connection available', 'network_error');
67
+ }
68
+
69
+ // Build request URL
70
+ const url = `${API_CONFIG.baseUrl}/${API_CONFIG.version}/${endpoint}`;
71
+
72
+ // Log request information if debug mode is enabled
73
+ if (debug) {
74
+ logDebug('API Request', {
75
+ url,
76
+ method,
77
+ headers: {
78
+ ...buildHeaders(accessToken, headers),
79
+ Authorization: accessToken ? '[REDACTED]' : undefined
80
+ },
81
+ data: data || null
82
+ });
83
+ }
84
+
85
+ // Set up request options
86
+ const fetchOptions = {
87
+ method,
88
+ headers: buildHeaders(accessToken, headers),
89
+ ...(data ? {
90
+ body: JSON.stringify(data)
91
+ } : {})
92
+ };
93
+
94
+ // Create fetch request with timeout
95
+ const controller = new AbortController();
96
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
97
+
98
+ // Execute request
99
+ const response = await fetch(url, {
100
+ ...fetchOptions,
101
+ signal: controller.signal
102
+ });
103
+
104
+ // Clear timeout
105
+ clearTimeout(timeoutId);
106
+
107
+ // Parse response as JSON
108
+ const responseData = await response.json();
109
+
110
+ // Log response if debug mode is enabled
111
+ if (debug) {
112
+ logDebug('API Response', {
113
+ status: response.status,
114
+ data: responseData
115
+ });
116
+ }
117
+
118
+ // Handle API error responses
119
+ if (!response.ok) {
120
+ var _responseData$error, _responseData$error2, _responseData$error3;
121
+ const errorType = response.status === 401 || response.status === 403 ? 'auth_error' : response.status === 400 ? 'validation_error' : response.status >= 500 ? 'server_error' : 'unknown_error';
122
+ throw new ApiError(((_responseData$error = responseData.error) === null || _responseData$error === void 0 ? void 0 : _responseData$error.message) || 'API request failed', errorType, (_responseData$error2 = responseData.error) === null || _responseData$error2 === void 0 ? void 0 : _responseData$error2.code, (_responseData$error3 = responseData.error) === null || _responseData$error3 === void 0 ? void 0 : _responseData$error3.details);
123
+ }
124
+ return responseData;
125
+ } catch (error) {
126
+ // Handle specific error types
127
+ if (error instanceof ApiError) {
128
+ throw error;
129
+ }
130
+ if (error.name === 'AbortError') {
131
+ throw new ApiError('Request timed out', 'timeout_error');
132
+ }
133
+
134
+ // Log error if debug mode is enabled
135
+ if (debug) {
136
+ logDebug('API Error', {
137
+ endpoint,
138
+ method,
139
+ error: error.message || 'Unknown error'
140
+ });
141
+ }
142
+
143
+ // Return a generic error for all other cases
144
+ throw new ApiError(error.message || 'An unexpected error occurred', 'unknown_error');
145
+ }
146
+ };
147
+
148
+ /**
149
+ * Validate user credentials with the API
150
+ */
151
+ export const validateCredentials = async (username, options = {
152
+ debug: false
153
+ }) => {
154
+ try {
155
+ var _response$data, _response$error;
156
+ const response = await apiRequest('auth/validate', 'POST', {
157
+ data: {
158
+ username
159
+ },
160
+ debug: options.debug
161
+ });
162
+ return {
163
+ isValid: response.success && ((_response$data = response.data) === null || _response$data === void 0 ? void 0 : _response$data.isValid) === true,
164
+ message: (_response$error = response.error) === null || _response$error === void 0 ? void 0 : _response$error.message
165
+ };
166
+ } catch (error) {
167
+ return {
168
+ isValid: false,
169
+ message: error.message
170
+ };
171
+ }
172
+ };
173
+
174
+ /**
175
+ * Create a new user account
176
+ */
177
+ export const createAccount = async (credentials, options = {
178
+ debug: false
179
+ }) => {
180
+ return apiRequest('auth/register', 'POST', {
181
+ data: {
182
+ username: credentials.username,
183
+ platforms: credentials.platforms
184
+ },
185
+ debug: options.debug
186
+ });
187
+ };
188
+
189
+ /**
190
+ * Authenticate with the API using credentials
191
+ */
192
+ export const authenticate = async (credentials, options = {
193
+ debug: false
194
+ }) => {
195
+ return apiRequest('auth/login', 'POST', {
196
+ data: {
197
+ username: credentials.username,
198
+ pin: credentials.userPin
199
+ },
200
+ debug: options.debug
201
+ });
202
+ };
203
+
204
+ /**
205
+ * Refresh authentication token
206
+ */
207
+ export const refreshToken = async (refreshToken, options = {
208
+ debug: false
209
+ }) => {
210
+ return apiRequest('auth/refresh', 'POST', {
211
+ data: {
212
+ refreshToken
213
+ },
214
+ debug: options.debug
215
+ });
216
+ };
217
+
218
+ /**
219
+ * Get user's connected platform data
220
+ */
221
+ export const getPlatformData = async (accessToken, platform, options = {
222
+ debug: false
223
+ }) => {
224
+ return apiRequest(`platforms/${platform}/data`, 'GET', {
225
+ accessToken,
226
+ debug: options.debug
227
+ });
228
+ };
229
+
230
+ /**
231
+ * Get user profile information
232
+ */
233
+ export const getUserProfile = async (accessToken, options = {
234
+ debug: false
235
+ }) => {
236
+ return apiRequest('user/profile', 'GET', {
237
+ accessToken,
238
+ debug: options.debug
239
+ });
240
+ };
241
+
242
+ /**
243
+ * Update user platform connections
244
+ */
245
+ export const updatePlatformConnections = async (accessToken, platforms, options = {
246
+ debug: false
247
+ }) => {
248
+ return apiRequest('user/platforms', 'PUT', {
249
+ accessToken,
250
+ data: {
251
+ platforms
252
+ },
253
+ debug: options.debug
254
+ });
255
+ };
256
+ //# sourceMappingURL=onairosApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Platform","NetInfo","logDebug","API_CONFIG","baseUrl","version","timeout","ApiError","Error","constructor","message","type","code","details","name","checkNetworkConnection","networkState","fetch","isConnected","buildHeaders","accessToken","additionalHeaders","headers","OS","Version","apiRequest","endpoint","method","options","data","debug","url","Authorization","undefined","fetchOptions","body","JSON","stringify","controller","AbortController","timeoutId","setTimeout","abort","response","signal","clearTimeout","responseData","json","status","ok","_responseData$error","_responseData$error2","_responseData$error3","errorType","error","validateCredentials","username","_response$data","_response$error","isValid","success","createAccount","credentials","platforms","authenticate","pin","userPin","refreshToken","getPlatformData","platform","getUserProfile","updatePlatformConnections"],"sourceRoot":"..\\..\\..\\src","sources":["utils/onairosApi.ts"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,cAAc;AACvC,OAAOC,OAAO,MAAM,iCAAiC;AAErD,SAASC,QAAQ,QAAQ,eAAe;;AAExC;AACA,MAAMC,UAAU,GAAG;EACjBC,OAAO,EAAE,yBAAyB;EAClCC,OAAO,EAAE,IAAI;EACbC,OAAO,EAAE,KAAK,CAAE;AAClB,CAAC;;AAED;;AAWA;;AASA;AACA,OAAO,MAAMC,QAAQ,SAASC,KAAK,CAAC;EAKlCC,WAAWA,CAACC,OAAe,EAAEC,IAAkB,EAAEC,IAAa,EAAEC,OAAa,EAAE;IAC7E,KAAK,CAACH,OAAO,CAAC;IACd,IAAI,CAACC,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,IAAI,GAAG,UAAU;EACxB;AACF;;AAEA;AACA;AACA;AACA,MAAMC,sBAAsB,GAAG,MAAAA,CAAA,KAA8B;EAC3D,MAAMC,YAAY,GAAG,MAAMf,OAAO,CAACgB,KAAK,CAAC,CAAC;EAC1C,OAAOD,YAAY,CAACE,WAAW,KAAK,IAAI;AAC1C,CAAC;;AAED;AACA;AACA;AACA,MAAMC,YAAY,GAAGA,CAACC,WAAoB,EAAEC,iBAAiB,GAAG,CAAC,CAAC,KAA6B;EAC7F,MAAMC,OAA+B,GAAG;IACtC,cAAc,EAAE,kBAAkB;IAClC,QAAQ,EAAE,kBAAkB;IAC5B,YAAY,EAAE,sBAAsBtB,QAAQ,CAACuB,EAAE,IAAIvB,QAAQ,CAACwB,OAAO,EAAE;IACrE,GAAGH;EACL,CAAC;EAED,IAAID,WAAW,EAAE;IACfE,OAAO,CAAC,eAAe,CAAC,GAAG,UAAUF,WAAW,EAAE;EACpD;EAEA,OAAOE,OAAO;AAChB,CAAC;;AAED;AACA;AACA;AACA,MAAMG,UAAU,GAAG,MAAAA,CACjBC,QAAgB,EAChBC,MAAmD,EACnDC,OAMC,GAAG,CAAC,CAAC,KACsB;EAC5B,MAAM;IACJC,IAAI;IACJT,WAAW;IACXE,OAAO,GAAG,CAAC,CAAC;IACZhB,OAAO,GAAGH,UAAU,CAACG,OAAO;IAC5BwB,KAAK,GAAG;EACV,CAAC,GAAGF,OAAO;EAEX,IAAI;IACF;IACA,MAAMV,WAAW,GAAG,MAAMH,sBAAsB,CAAC,CAAC;IAClD,IAAI,CAACG,WAAW,EAAE;MAChB,MAAM,IAAIX,QAAQ,CAChB,iCAAiC,EACjC,eACF,CAAC;IACH;;IAEA;IACA,MAAMwB,GAAG,GAAG,GAAG5B,UAAU,CAACC,OAAO,IAAID,UAAU,CAACE,OAAO,IAAIqB,QAAQ,EAAE;;IAErE;IACA,IAAII,KAAK,EAAE;MACT5B,QAAQ,CAAC,aAAa,EAAE;QACtB6B,GAAG;QACHJ,MAAM;QACNL,OAAO,EAAE;UAAE,GAAGH,YAAY,CAACC,WAAW,EAAEE,OAAO,CAAC;UAAEU,aAAa,EAAEZ,WAAW,GAAG,YAAY,GAAGa;QAAU,CAAC;QACzGJ,IAAI,EAAEA,IAAI,IAAI;MAChB,CAAC,CAAC;IACJ;;IAEA;IACA,MAAMK,YAAyB,GAAG;MAChCP,MAAM;MACNL,OAAO,EAAEH,YAAY,CAACC,WAAW,EAAEE,OAAO,CAAC;MAC3C,IAAIO,IAAI,GAAG;QAAEM,IAAI,EAAEC,IAAI,CAACC,SAAS,CAACR,IAAI;MAAE,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC;;IAED;IACA,MAAMS,UAAU,GAAG,IAAIC,eAAe,CAAC,CAAC;IACxC,MAAMC,SAAS,GAAGC,UAAU,CAAC,MAAMH,UAAU,CAACI,KAAK,CAAC,CAAC,EAAEpC,OAAO,CAAC;;IAE/D;IACA,MAAMqC,QAAQ,GAAG,MAAM1B,KAAK,CAACc,GAAG,EAAE;MAChC,GAAGG,YAAY;MACfU,MAAM,EAAEN,UAAU,CAACM;IACrB,CAAC,CAAC;;IAEF;IACAC,YAAY,CAACL,SAAS,CAAC;;IAEvB;IACA,MAAMM,YAAY,GAAG,MAAMH,QAAQ,CAACI,IAAI,CAAC,CAAC;;IAE1C;IACA,IAAIjB,KAAK,EAAE;MACT5B,QAAQ,CAAC,cAAc,EAAE;QACvB8C,MAAM,EAAEL,QAAQ,CAACK,MAAM;QACvBnB,IAAI,EAAEiB;MACR,CAAC,CAAC;IACJ;;IAEA;IACA,IAAI,CAACH,QAAQ,CAACM,EAAE,EAAE;MAAA,IAAAC,mBAAA,EAAAC,oBAAA,EAAAC,oBAAA;MAChB,MAAMC,SAAuB,GAC3BV,QAAQ,CAACK,MAAM,KAAK,GAAG,IAAIL,QAAQ,CAACK,MAAM,KAAK,GAAG,GAAG,YAAY,GACjEL,QAAQ,CAACK,MAAM,KAAK,GAAG,GAAG,kBAAkB,GAC5CL,QAAQ,CAACK,MAAM,IAAI,GAAG,GAAG,cAAc,GAAG,eAAe;MAE3D,MAAM,IAAIzC,QAAQ,CAChB,EAAA2C,mBAAA,GAAAJ,YAAY,CAACQ,KAAK,cAAAJ,mBAAA,uBAAlBA,mBAAA,CAAoBxC,OAAO,KAAI,oBAAoB,EACnD2C,SAAS,GAAAF,oBAAA,GACTL,YAAY,CAACQ,KAAK,cAAAH,oBAAA,uBAAlBA,oBAAA,CAAoBvC,IAAI,GAAAwC,oBAAA,GACxBN,YAAY,CAACQ,KAAK,cAAAF,oBAAA,uBAAlBA,oBAAA,CAAoBvC,OACtB,CAAC;IACH;IAEA,OAAOiC,YAAY;EACrB,CAAC,CAAC,OAAOQ,KAAK,EAAE;IACd;IACA,IAAIA,KAAK,YAAY/C,QAAQ,EAAE;MAC7B,MAAM+C,KAAK;IACb;IAEA,IAAIA,KAAK,CAACxC,IAAI,KAAK,YAAY,EAAE;MAC/B,MAAM,IAAIP,QAAQ,CAAC,mBAAmB,EAAE,eAAe,CAAC;IAC1D;;IAEA;IACA,IAAIuB,KAAK,EAAE;MACT5B,QAAQ,CAAC,WAAW,EAAE;QACpBwB,QAAQ;QACRC,MAAM;QACN2B,KAAK,EAAEA,KAAK,CAAC5C,OAAO,IAAI;MAC1B,CAAC,CAAC;IACJ;;IAEA;IACA,MAAM,IAAIH,QAAQ,CAChB+C,KAAK,CAAC5C,OAAO,IAAI,8BAA8B,EAC/C,eACF,CAAC;EACH;AACF,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAM6C,mBAAmB,GAAG,MAAAA,CACjCC,QAAgB,EAChB5B,OAAO,GAAG;EAAEE,KAAK,EAAE;AAAM,CAAC,KAC0B;EACpD,IAAI;IAAA,IAAA2B,cAAA,EAAAC,eAAA;IACF,MAAMf,QAAQ,GAAG,MAAMlB,UAAU,CAAuB,eAAe,EAAE,MAAM,EAAE;MAC/EI,IAAI,EAAE;QAAE2B;MAAS,CAAC;MAClB1B,KAAK,EAAEF,OAAO,CAACE;IACjB,CAAC,CAAC;IAEF,OAAO;MACL6B,OAAO,EAAEhB,QAAQ,CAACiB,OAAO,IAAI,EAAAH,cAAA,GAAAd,QAAQ,CAACd,IAAI,cAAA4B,cAAA,uBAAbA,cAAA,CAAeE,OAAO,MAAK,IAAI;MAC5DjD,OAAO,GAAAgD,eAAA,GAAEf,QAAQ,CAACW,KAAK,cAAAI,eAAA,uBAAdA,eAAA,CAAgBhD;IAC3B,CAAC;EACH,CAAC,CAAC,OAAO4C,KAAK,EAAE;IACd,OAAO;MACLK,OAAO,EAAE,KAAK;MACdjD,OAAO,EAAE4C,KAAK,CAAC5C;IACjB,CAAC;EACH;AACF,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMmD,aAAa,GAAG,MAAAA,CAC3BC,WAAwC,EACxClC,OAAO,GAAG;EAAEE,KAAK,EAAE;AAAM,CAAC,KACwC;EAClE,OAAOL,UAAU,CAAC,eAAe,EAAE,MAAM,EAAE;IACzCI,IAAI,EAAE;MACJ2B,QAAQ,EAAEM,WAAW,CAACN,QAAQ;MAC9BO,SAAS,EAAED,WAAW,CAACC;IACzB,CAAC;IACDjC,KAAK,EAAEF,OAAO,CAACE;EACjB,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMkC,YAAY,GAAG,MAAAA,CAC1BF,WAAwC,EACxClC,OAAO,GAAG;EAAEE,KAAK,EAAE;AAAM,CAAC,KAC8C;EACxE,OAAOL,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE;IACtCI,IAAI,EAAE;MACJ2B,QAAQ,EAAEM,WAAW,CAACN,QAAQ;MAC9BS,GAAG,EAAEH,WAAW,CAACI;IACnB,CAAC;IACDpC,KAAK,EAAEF,OAAO,CAACE;EACjB,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMqC,YAAY,GAAG,MAAAA,CAC1BA,YAAoB,EACpBvC,OAAO,GAAG;EAAEE,KAAK,EAAE;AAAM,CAAC,KAC8C;EACxE,OAAOL,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE;IACxCI,IAAI,EAAE;MAAEsC;IAAa,CAAC;IACtBrC,KAAK,EAAEF,OAAO,CAACE;EACjB,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMsC,eAAe,GAAG,MAAAA,CAC7BhD,WAAmB,EACnBiD,QAAgB,EAChBzC,OAAO,GAAG;EAAEE,KAAK,EAAE;AAAM,CAAC,KACI;EAC9B,OAAOL,UAAU,CAAC,aAAa4C,QAAQ,OAAO,EAAE,KAAK,EAAE;IACrDjD,WAAW;IACXU,KAAK,EAAEF,OAAO,CAACE;EACjB,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMwC,cAAc,GAAG,MAAAA,CAC5BlD,WAAmB,EACnBQ,OAAO,GAAG;EAAEE,KAAK,EAAE;AAAM,CAAC,KACI;EAC9B,OAAOL,UAAU,CAAC,cAAc,EAAE,KAAK,EAAE;IACvCL,WAAW;IACXU,KAAK,EAAEF,OAAO,CAACE;EACjB,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMyC,yBAAyB,GAAG,MAAAA,CACvCnD,WAAmB,EACnB2C,SAA8B,EAC9BnC,OAAO,GAAG;EAAEE,KAAK,EAAE;AAAM,CAAC,KACI;EAC9B,OAAOL,UAAU,CAAC,gBAAgB,EAAE,KAAK,EAAE;IACzCL,WAAW;IACXS,IAAI,EAAE;MAAEkC;IAAU,CAAC;IACnBjC,KAAK,EAAEF,OAAO,CAACE;EACjB,CAAC,CAAC;AACJ,CAAC","ignoreList":[]}