@onairos/react-native 3.7.1 → 3.7.3
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/lib/commonjs/api/index.js +219 -9
- package/lib/commonjs/assets/icons/spotify.png +0 -0
- package/lib/commonjs/assets/images/spotify.png +0 -0
- package/lib/commonjs/components/BodyText.js +27 -9
- package/lib/commonjs/components/BrandMark.js +111 -10
- package/lib/commonjs/components/CodeInput.js +116 -9
- package/lib/commonjs/components/EmailInput.js +30 -8
- package/lib/commonjs/components/GoogleButton.js +56 -9
- package/lib/commonjs/components/HeadingGroup.js +43 -9
- package/lib/commonjs/components/LLMDataInputModal.js +664 -14
- package/lib/commonjs/components/ModalHeader.js +99 -9
- package/lib/commonjs/components/ModalSheet.js +47 -9
- package/lib/commonjs/components/Onairos.js +380 -14
- package/lib/commonjs/components/OnairosButton.js +313 -13
- package/lib/commonjs/components/OnairosSignInButton.js +130 -12
- package/lib/commonjs/components/Overlay.js +465 -13
- package/lib/commonjs/components/PersonaImage.js +137 -10
- package/lib/commonjs/components/PersonaLoadingScreen.js +318 -12
- package/lib/commonjs/components/PersonalizationConsentScreen.js +467 -13
- package/lib/commonjs/components/PinCreationScreen.js +403 -12
- package/lib/commonjs/components/PinInput.js +464 -9
- package/lib/commonjs/components/PlatformConnectorsStep.js +1311 -23
- package/lib/commonjs/components/PlatformList.js +137 -10
- package/lib/commonjs/components/PlatformToggle.js +180 -9
- package/lib/commonjs/components/PrimaryButton.js +180 -10
- package/lib/commonjs/components/SignInMatchAnimation.js +197 -9
- package/lib/commonjs/components/SignInStep.js +345 -12
- package/lib/commonjs/components/UniversalOnboarding.js +2780 -30
- package/lib/commonjs/components/VerificationStep.js +176 -11
- package/lib/commonjs/components/WelcomeScreen.js +461 -22
- package/lib/commonjs/components/icons/Basicproficon.js +37 -8
- package/lib/commonjs/components/icons/Basicprofile.js +21 -8
- package/lib/commonjs/components/icons/Checkbox.js +21 -8
- package/lib/commonjs/components/icons/Checkmark.js +27 -8
- package/lib/commonjs/components/icons/Contentanalysis.js +21 -8
- package/lib/commonjs/components/icons/Contenticon.js +39 -8
- package/lib/commonjs/components/icons/EnochE.js +41 -8
- package/lib/commonjs/components/icons/Personalityicon.js +30 -8
- package/lib/commonjs/components/icons/Personalityprofile.js +21 -8
- package/lib/commonjs/components/icons/Personalitytraits.js +21 -8
- package/lib/commonjs/components/icons/Userpreferences.js +21 -8
- package/lib/commonjs/components/icons/index.js +84 -17
- package/lib/commonjs/components/onboarding/OAuthWebView.js +1754 -18
- package/lib/commonjs/components/onboarding/OnboardingHeader.js +74 -10
- package/lib/commonjs/components/onboarding/PinInput.js +283 -10
- package/lib/commonjs/components/onboarding/PlatformConnector.js +249 -11
- package/lib/commonjs/config/PLATFORM_APIS.md +849 -0
- package/lib/commonjs/config/api.js +56 -7
- package/lib/commonjs/constants/index.js +120 -7
- package/lib/commonjs/context/AuthContext.js +345 -10
- package/lib/commonjs/hooks/useConnectedAccounts.js +111 -9
- package/lib/commonjs/hooks/useConnections.js +102 -8
- package/lib/commonjs/hooks/useCredentials.js +178 -10
- package/lib/commonjs/hooks/useUserConnections.js +148 -10
- package/lib/commonjs/index.js +439 -34
- package/lib/commonjs/services/apiClient.js +298 -8
- package/lib/commonjs/services/biometricPinService.js +180 -8
- package/lib/commonjs/services/chatGPTConversationExtractor.js +155 -8
- package/lib/commonjs/services/chatGPTConversationService.js +275 -9
- package/lib/commonjs/services/claudeConversationExtractor.js +103 -8
- package/lib/commonjs/services/claudeConversationService.js +158 -9
- package/lib/commonjs/services/connectedAccountsService.js +310 -10
- package/lib/commonjs/services/googleAuthService.js +252 -11
- package/lib/commonjs/services/hingeDataExtractor.js +105 -8
- package/lib/commonjs/services/hingeDataService.js +150 -9
- package/lib/commonjs/services/imageCompressionService.js +260 -7
- package/lib/commonjs/services/instagramDataExtractor.js +126 -8
- package/lib/commonjs/services/instagramDataService.js +163 -9
- package/lib/commonjs/services/jwtStorageService.js +276 -7
- package/lib/commonjs/services/linkedinDOMExtractor.js +245 -7
- package/lib/commonjs/services/linkedinProfileService.js +222 -9
- package/lib/commonjs/services/linkedinScrapingService.js +230 -8
- package/lib/commonjs/services/llmDataStorage.js +294 -8
- package/lib/commonjs/services/mobileTrainingService.js +186 -8
- package/lib/commonjs/services/netflixDataExtractor.js +120 -8
- package/lib/commonjs/services/netflixDataService.js +198 -9
- package/lib/commonjs/services/pinEncryptionService.js +84 -8
- package/lib/commonjs/services/pinStorageUtils.js +105 -7
- package/lib/commonjs/services/platformAuthService.js +1484 -12
- package/lib/commonjs/services/sephoraDataExtractor.js +140 -8
- package/lib/commonjs/services/sephoraDataService.js +200 -9
- package/lib/commonjs/services/spotifyDataExtractor.js +148 -8
- package/lib/commonjs/services/spotifyDataService.js +241 -9
- package/lib/commonjs/services/storageService.js +404 -8
- package/lib/commonjs/services/telegramDataExtractor.js +115 -8
- package/lib/commonjs/services/telegramDataService.js +499 -9
- package/lib/commonjs/services/trainingApiHelpers.js +73 -7
- package/lib/commonjs/services/userConnectionsService.js +340 -10
- package/lib/commonjs/services/youtubeMigrationService.js +416 -10
- package/lib/commonjs/theme/index.js +250 -7
- package/lib/commonjs/types/ambient.d.js +2 -1
- package/lib/commonjs/types/declarations.d.js +2 -1
- package/lib/commonjs/types/index.js +6 -1
- package/lib/commonjs/types/node-fix.d.js +2 -1
- package/lib/commonjs/types/node-override.d.js +2 -1
- package/lib/commonjs/types/opacity.d.js +2 -1
- package/lib/commonjs/types.js +14 -1
- package/lib/commonjs/utils/Portal.js +98 -8
- package/lib/commonjs/utils/api.js +130 -9
- package/lib/commonjs/utils/assetRegistry.js +210 -35
- package/lib/commonjs/utils/auth.js +112 -9
- package/lib/commonjs/utils/connectorTests.js +613 -29
- package/lib/commonjs/utils/crypto.js +62 -8
- package/lib/commonjs/utils/debugHelper.js +64 -1
- package/lib/commonjs/utils/encryption.js +76 -7
- package/lib/commonjs/utils/eventUtils.js +288 -1
- package/lib/commonjs/utils/haptics.js +66 -9
- package/lib/commonjs/utils/imagePreloader.js +6 -1
- package/lib/commonjs/utils/networkDiagnostics.js +226 -8
- package/lib/commonjs/utils/onairosApi.js +350 -9
- package/lib/commonjs/utils/programmaticFlow.js +117 -9
- package/lib/commonjs/utils/retryHelper.js +220 -1
- package/lib/commonjs/utils/secureStorage.js +349 -10
- package/lib/commonjs/utils/webviewScripts/chatgpt.js +551 -1
- package/lib/commonjs/utils/webviewScripts/claude.js +376 -1
- package/lib/commonjs/utils/webviewScripts/hinge.js +411 -1
- package/lib/commonjs/utils/webviewScripts/index.js +698 -15
- package/lib/commonjs/utils/webviewScripts/instagram.js +454 -1
- package/lib/commonjs/utils/webviewScripts/linkedin.js +880 -1
- package/lib/commonjs/utils/webviewScripts/netflix.js +382 -1
- package/lib/commonjs/utils/webviewScripts/sephora.js +516 -1
- package/lib/commonjs/utils/webviewScripts/spotify.js +419 -1
- package/lib/commonjs/utils/webviewScripts/telegram.js +678 -1
- package/lib/module/api/index.js +211 -1
- package/lib/module/assets/icons/spotify.png +0 -0
- package/lib/module/assets/images/spotify.png +0 -0
- package/lib/module/components/BodyText.js +20 -1
- package/lib/module/components/BrandMark.js +104 -1
- package/lib/module/components/CodeInput.js +109 -1
- package/lib/module/components/EmailInput.js +23 -1
- package/lib/module/components/GoogleButton.js +49 -1
- package/lib/module/components/HeadingGroup.js +36 -1
- package/lib/module/components/LLMDataInputModal.js +656 -7
- package/lib/module/components/ModalHeader.js +92 -1
- package/lib/module/components/ModalSheet.js +39 -1
- package/lib/module/components/Onairos.js +373 -1
- package/lib/module/components/OnairosButton.js +305 -1
- package/lib/module/components/OnairosSignInButton.js +121 -1
- package/lib/module/components/Overlay.js +456 -1
- package/lib/module/components/PersonaImage.js +129 -1
- package/lib/module/components/PersonaLoadingScreen.js +310 -1
- package/lib/module/components/PersonalizationConsentScreen.js +460 -1
- package/lib/module/components/PinCreationScreen.js +396 -1
- package/lib/module/components/PinInput.js +456 -1
- package/lib/module/components/PlatformConnectorsStep.js +1302 -6
- package/lib/module/components/PlatformList.js +129 -1
- package/lib/module/components/PlatformToggle.js +173 -1
- package/lib/module/components/PrimaryButton.js +172 -1
- package/lib/module/components/SignInMatchAnimation.js +189 -1
- package/lib/module/components/SignInStep.js +338 -1
- package/lib/module/components/UniversalOnboarding.js +2770 -1
- package/lib/module/components/VerificationStep.js +168 -1
- package/lib/module/components/WelcomeScreen.js +453 -1
- package/lib/module/components/icons/Basicproficon.js +30 -1
- package/lib/module/components/icons/Basicprofile.js +14 -1
- package/lib/module/components/icons/Checkbox.js +14 -1
- package/lib/module/components/icons/Checkmark.js +20 -1
- package/lib/module/components/icons/Contentanalysis.js +14 -1
- package/lib/module/components/icons/Contenticon.js +32 -1
- package/lib/module/components/icons/EnochE.js +34 -1
- package/lib/module/components/icons/Personalityicon.js +23 -1
- package/lib/module/components/icons/Personalityprofile.js +14 -1
- package/lib/module/components/icons/Personalitytraits.js +14 -1
- package/lib/module/components/icons/Userpreferences.js +14 -1
- package/lib/module/components/icons/index.js +13 -1
- package/lib/module/components/onboarding/OAuthWebView.js +1746 -1
- package/lib/module/components/onboarding/OnboardingHeader.js +66 -1
- package/lib/module/components/onboarding/PinInput.js +274 -1
- package/lib/module/components/onboarding/PlatformConnector.js +240 -1
- package/lib/module/config/PLATFORM_APIS.md +849 -0
- package/lib/module/config/api.js +47 -1
- package/lib/module/constants/index.js +114 -1
- package/lib/module/context/AuthContext.js +335 -1
- package/lib/module/hooks/useConnectedAccounts.js +106 -1
- package/lib/module/hooks/useConnections.js +95 -1
- package/lib/module/hooks/useCredentials.js +171 -6
- package/lib/module/hooks/useUserConnections.js +140 -1
- package/lib/module/index.js +172 -1
- package/lib/module/services/apiClient.js +295 -1
- package/lib/module/services/biometricPinService.js +169 -1
- package/lib/module/services/chatGPTConversationExtractor.js +149 -1
- package/lib/module/services/chatGPTConversationService.js +268 -1
- package/lib/module/services/claudeConversationExtractor.js +97 -1
- package/lib/module/services/claudeConversationService.js +151 -1
- package/lib/module/services/connectedAccountsService.js +293 -1
- package/lib/module/services/googleAuthService.js +241 -1
- package/lib/module/services/hingeDataExtractor.js +99 -1
- package/lib/module/services/hingeDataService.js +143 -1
- package/lib/module/services/imageCompressionService.js +250 -1
- package/lib/module/services/instagramDataExtractor.js +120 -1
- package/lib/module/services/instagramDataService.js +156 -1
- package/lib/module/services/jwtStorageService.js +257 -1
- package/lib/module/services/linkedinDOMExtractor.js +234 -1
- package/lib/module/services/linkedinProfileService.js +210 -1
- package/lib/module/services/linkedinScrapingService.js +219 -1
- package/lib/module/services/llmDataStorage.js +277 -1
- package/lib/module/services/mobileTrainingService.js +173 -1
- package/lib/module/services/netflixDataExtractor.js +114 -1
- package/lib/module/services/netflixDataService.js +191 -1
- package/lib/module/services/pinEncryptionService.js +74 -6
- package/lib/module/services/pinStorageUtils.js +93 -1
- package/lib/module/services/platformAuthService.js +1461 -1
- package/lib/module/services/sephoraDataExtractor.js +134 -1
- package/lib/module/services/sephoraDataService.js +193 -1
- package/lib/module/services/spotifyDataExtractor.js +142 -1
- package/lib/module/services/spotifyDataService.js +234 -1
- package/lib/module/services/storageService.js +383 -1
- package/lib/module/services/telegramDataExtractor.js +109 -1
- package/lib/module/services/telegramDataService.js +493 -1
- package/lib/module/services/trainingApiHelpers.js +67 -1
- package/lib/module/services/userConnectionsService.js +329 -1
- package/lib/module/services/youtubeMigrationService.js +405 -1
- package/lib/module/theme/index.js +245 -1
- package/lib/module/types.js +10 -1
- package/lib/module/utils/Portal.js +90 -1
- package/lib/module/utils/api.js +118 -1
- package/lib/module/utils/assetRegistry.js +200 -34
- package/lib/module/utils/auth.js +100 -1
- package/lib/module/utils/connectorTests.js +600 -27
- package/lib/module/utils/crypto.js +54 -1
- package/lib/module/utils/debugHelper.js +54 -1
- package/lib/module/utils/encryption.js +67 -1
- package/lib/module/utils/eventUtils.js +270 -1
- package/lib/module/utils/haptics.js +59 -8
- package/lib/module/utils/imagePreloader.js +3 -1
- package/lib/module/utils/networkDiagnostics.js +217 -1
- package/lib/module/utils/onairosApi.js +333 -1
- package/lib/module/utils/programmaticFlow.js +111 -1
- package/lib/module/utils/retryHelper.js +211 -1
- package/lib/module/utils/secureStorage.js +330 -6
- package/lib/module/utils/webviewScripts/chatgpt.js +545 -1
- package/lib/module/utils/webviewScripts/claude.js +370 -1
- package/lib/module/utils/webviewScripts/hinge.js +405 -1
- package/lib/module/utils/webviewScripts/index.js +434 -1
- package/lib/module/utils/webviewScripts/instagram.js +448 -1
- package/lib/module/utils/webviewScripts/linkedin.js +874 -1
- package/lib/module/utils/webviewScripts/netflix.js +376 -1
- package/lib/module/utils/webviewScripts/sephora.js +510 -1
- package/lib/module/utils/webviewScripts/spotify.js +413 -1
- package/lib/module/utils/webviewScripts/telegram.js +672 -1
- package/package.json +2 -2
|
@@ -1,8 +1,62 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.sha256 = exports.rsaEncrypt = exports.base64ToBuffer = void 0;
|
|
7
|
+
var _reactNativeRsaNative = require("react-native-rsa-native");
|
|
8
|
+
var _reactNativeCryptoJs = require("react-native-crypto-js");
|
|
9
|
+
/**
|
|
10
|
+
* Encrypt data using RSA
|
|
11
|
+
* @param {string} publicKey - The RSA public key
|
|
12
|
+
* @param {string} data - The data to encrypt
|
|
13
|
+
* @returns {Promise<string>} - The encrypted data
|
|
14
|
+
*/
|
|
15
|
+
const rsaEncrypt = async (publicKey, data) => {
|
|
16
|
+
try {
|
|
17
|
+
// Clean the public key format
|
|
18
|
+
const cleanedKey = publicKey.replace(/\\n/g, '').replace(/^\s+|\s+$/g, '').replace('-----BEGIN PUBLIC KEY-----', '').replace('-----END PUBLIC KEY-----', '').trim();
|
|
19
|
+
|
|
20
|
+
// Format the key properly for the library
|
|
21
|
+
const formattedKey = `-----BEGIN PUBLIC KEY-----\n${cleanedKey}\n-----END PUBLIC KEY-----`;
|
|
22
|
+
|
|
23
|
+
// Encrypt the data
|
|
24
|
+
const encrypted = await _reactNativeRsaNative.RSA.encrypt(data, formattedKey);
|
|
25
|
+
return encrypted;
|
|
26
|
+
} catch (error) {
|
|
27
|
+
console.error('RSA encryption failed:', error);
|
|
28
|
+
throw error;
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Hash data using SHA-256
|
|
34
|
+
* @param {string} data - The data to hash
|
|
35
|
+
* @returns {string} - The hashed data
|
|
36
|
+
*/
|
|
37
|
+
exports.rsaEncrypt = rsaEncrypt;
|
|
38
|
+
const sha256 = data => {
|
|
39
|
+
return (0, _reactNativeCryptoJs.sha256)(data).toString();
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Convert a base64 string to a buffer
|
|
44
|
+
* @param {string} base64String - The base64 string to convert
|
|
45
|
+
* @returns {ArrayBuffer} - The converted buffer
|
|
46
|
+
*/
|
|
47
|
+
exports.sha256 = sha256;
|
|
48
|
+
const base64ToBuffer = base64String => {
|
|
49
|
+
try {
|
|
50
|
+
const binaryString = Buffer.from(base64String, 'base64').toString('binary');
|
|
51
|
+
const bytes = new Uint8Array(binaryString.length);
|
|
52
|
+
for (let i = 0; i < binaryString.length; i++) {
|
|
53
|
+
bytes[i] = binaryString.charCodeAt(i);
|
|
54
|
+
}
|
|
55
|
+
return bytes.buffer;
|
|
56
|
+
} catch (error) {
|
|
57
|
+
console.error('Error converting base64 to buffer:', error);
|
|
58
|
+
throw error;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
exports.base64ToBuffer = base64ToBuffer;
|
|
62
|
+
//# sourceMappingURL=crypto.js.map
|
|
@@ -1 +1,64 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.logError = exports.logDebug = exports.logApiRequest = exports.isDebugMode = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Debug utility functions for Onairos React Native SDK
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
// Determine if we're in dev mode
|
|
12
|
+
const __DEV__ = process.env.NODE_ENV !== 'production';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Log debug message to console when in development mode
|
|
16
|
+
* @param label Label for the debug message
|
|
17
|
+
* @param data Data to log
|
|
18
|
+
*/
|
|
19
|
+
const logDebug = (label, data) => {
|
|
20
|
+
if (__DEV__) {
|
|
21
|
+
console.log(`[Onairos Debug] ${label}:`, data || '');
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Log error message to console
|
|
27
|
+
* @param label Label for the error message
|
|
28
|
+
* @param error Error object or message
|
|
29
|
+
*/
|
|
30
|
+
exports.logDebug = logDebug;
|
|
31
|
+
const logError = (label, error) => {
|
|
32
|
+
if (__DEV__) {
|
|
33
|
+
console.error(`[Onairos Error] ${label}:`, error);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Check if debug mode is enabled
|
|
39
|
+
* @param debug Debug flag passed to component
|
|
40
|
+
* @returns Whether debug mode is enabled
|
|
41
|
+
*/
|
|
42
|
+
exports.logError = logError;
|
|
43
|
+
const isDebugMode = debug => {
|
|
44
|
+
return debug === true || __DEV__;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Format and log API request details
|
|
49
|
+
* @param method HTTP method
|
|
50
|
+
* @param url API URL
|
|
51
|
+
* @param data Request data
|
|
52
|
+
*/
|
|
53
|
+
exports.isDebugMode = isDebugMode;
|
|
54
|
+
const logApiRequest = (method, url, data) => {
|
|
55
|
+
if (__DEV__) {
|
|
56
|
+
logDebug('API Request', {
|
|
57
|
+
method,
|
|
58
|
+
url,
|
|
59
|
+
data: data || {}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
exports.logApiRequest = logApiRequest;
|
|
64
|
+
//# sourceMappingURL=debugHelper.js.map
|
|
@@ -1,7 +1,76 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.hashString = exports.getServerPublicKey = exports.encryptModelKey = void 0;
|
|
7
|
+
var _api = require("../api");
|
|
8
|
+
/**
|
|
9
|
+
* Encrypt a model key using RSA with a public key
|
|
10
|
+
* @param publicKey The public key to encrypt with
|
|
11
|
+
* @param modelKey The model key to encrypt
|
|
12
|
+
* @returns The encrypted model key
|
|
13
|
+
*/
|
|
14
|
+
const encryptModelKey = (publicKey, modelKey) => {
|
|
15
|
+
try {
|
|
16
|
+
console.log('Encrypting model key');
|
|
17
|
+
if (!publicKey || !modelKey) {
|
|
18
|
+
throw new Error('Public key or model key is missing');
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// In a production environment, this would use RSA encryption
|
|
22
|
+
// For now, we'll use a mock implementation
|
|
23
|
+
// return RSA.encrypt(modelKey, publicKey);
|
|
24
|
+
|
|
25
|
+
// Return a fake encrypted value
|
|
26
|
+
return `encrypted_${modelKey}_${Date.now()}`;
|
|
27
|
+
} catch (error) {
|
|
28
|
+
console.error('Error encrypting model key:', error);
|
|
29
|
+
throw error;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Get the server's public key
|
|
35
|
+
* @returns The server's public key
|
|
36
|
+
*/
|
|
37
|
+
exports.encryptModelKey = encryptModelKey;
|
|
38
|
+
const getServerPublicKey = async () => {
|
|
39
|
+
try {
|
|
40
|
+
var _response$data, _response$data2;
|
|
41
|
+
// Use the API without generics to prevent TypeScript errors
|
|
42
|
+
const response = await _api.onairosApi.get('public/getPublicKey');
|
|
43
|
+
|
|
44
|
+
// Check for the public key in the response data
|
|
45
|
+
if (response !== null && response !== void 0 && (_response$data = response.data) !== null && _response$data !== void 0 && (_response$data = _response$data.data) !== null && _response$data !== void 0 && _response$data.publicKey) {
|
|
46
|
+
return response.data.data.publicKey;
|
|
47
|
+
} else if (response !== null && response !== void 0 && (_response$data2 = response.data) !== null && _response$data2 !== void 0 && _response$data2.publicKey) {
|
|
48
|
+
return response.data.publicKey;
|
|
49
|
+
} else {
|
|
50
|
+
throw new Error('No public key found in response');
|
|
51
|
+
}
|
|
52
|
+
} catch (error) {
|
|
53
|
+
console.error('Error getting server public key:', error);
|
|
54
|
+
// For testing, return a mock public key
|
|
55
|
+
return 'mock_public_key_for_testing';
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Hash a string using SHA-256
|
|
61
|
+
* @param input The string to hash
|
|
62
|
+
* @returns The hashed string
|
|
63
|
+
*/
|
|
64
|
+
exports.getServerPublicKey = getServerPublicKey;
|
|
65
|
+
const hashString = async input => {
|
|
66
|
+
try {
|
|
67
|
+
// In a production environment, this would use a proper hashing function
|
|
68
|
+
// For now, we'll return a mock hash
|
|
69
|
+
return `hash_${input.replace(/\s+/g, '_')}_${Date.now()}`;
|
|
70
|
+
} catch (error) {
|
|
71
|
+
console.error('Error hashing string:', error);
|
|
72
|
+
return `fallback_hash_${Date.now()}`;
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
exports.hashString = hashString;
|
|
76
|
+
//# sourceMappingURL=encryption.js.map
|
|
@@ -1 +1,288 @@
|
|
|
1
|
-
'use strict';Object[_0x16e5(0x0)](exports,'__esModule',{'value':!![]}),exports['validateEventCode']=exports[_0x16e5(0x1)]=exports['isEventToday']=exports['isEventPast']=exports[_0x16e5(0x2)]=exports['getEventStatus']=exports[_0x16e5(0x3)]=exports['generateSmartEventCode']=exports[_0x16e5(0x4)]=exports['formatEventDate']=exports[_0x16e5(0x5)]=exports['calculateEventStats']=void 0x0;const generateEventCode=(_0x2eceda=0x6)=>{const _0x564bdc={'jFgnS':function(_0xe2d251,_0x15fe70){return _0xe2d251<_0x15fe70;},'gnfJx':function(_0x384983,_0x1dbeb6){return _0x384983*_0x1dbeb6;}},_0x341a2a=_0x16e5(0x6);let _0x1b89a6='';for(let _0x3ff525=0x0;_0x564bdc[_0x16e5(0x7)](_0x3ff525,_0x2eceda);_0x3ff525++){_0x1b89a6+=_0x341a2a[_0x16e5(0x8)](Math[_0x16e5(0x9)](_0x564bdc[_0x16e5(0xa)](Math[_0x16e5(0xb)](),_0x341a2a[_0x16e5(0xc)])));}return _0x1b89a6;};exports[_0x16e5(0x4)]=generateEventCode;const generateSmartEventCode=_0x12a602=>{const _0x5256cd={'VINct':function(_0x341ae7,_0x1d3643){return _0x341ae7-_0x1d3643;},'xfSdW':function(_0x5c14b5,_0x27be95){return _0x5c14b5<_0x27be95;},'tnoTp':_0x16e5(0xd),'XEdwR':function(_0x437baf,_0xaf6aa2){return _0x437baf(_0xaf6aa2);},'Ukxml':_0x16e5(0xe),'JGScs':function(_0x323958,_0x64bb1f){return _0x323958(_0x64bb1f);},'PzojR':'Today','sSgXq':function(_0x3aa8f7,_0x356a86){return _0x3aa8f7!==_0x356a86;},'cemBk':_0x16e5(0xf),'JMEbr':function(_0x2dc07d){return _0x2dc07d();},'BDybH':function(_0x3ebe4e,_0x3c0a01){return _0x3ebe4e>=_0x3c0a01;},'Ntknj':function(_0x4a636a,_0x18dabd){return _0x4a636a!==_0x18dabd;},'bRKwe':_0x16e5(0x10),'QqByA':function(_0x513561,_0x627481){return _0x513561!==_0x627481;},'oqmJj':_0x16e5(0x11),'QRsAw':function(_0x343f90,_0x506190){return _0x343f90>_0x506190;}};if(!_0x12a602[_0x16e5(0x12)]())return generateEventCode();const _0x27a8d8=_0x12a602['trim']()['toUpperCase']()['replace'](/[^A-Z0-9\s]/g,'')['split'](/\s+/)[_0x16e5(0x13)](_0x5a1088=>_0x5a1088[_0x16e5(0xc)]>0x0);if(_0x27a8d8[_0x16e5(0xc)]===0x0)return _0x5256cd[_0x16e5(0x14)](_0x5256cd[_0x16e5(0x15)],_0x5256cd[_0x16e5(0x15)])?_0x5256cd[_0x16e5(0x16)](_0x12f890[_0x16e5(0x17)](),_0x145efe[_0x16e5(0x17)]()):_0x5256cd[_0x16e5(0x18)](generateEventCode);let _0x5c4347='';if(_0x5256cd[_0x16e5(0x19)](_0x27a8d8[_0x16e5(0xc)],0x2)){const _0x36509e=_0x27a8d8[_0x16e5(0x1a)](0x0,0x3);_0x5c4347=_0x36509e[_0x16e5(0x1b)](_0x2d4a41=>_0x2d4a41[_0x16e5(0x1c)](0x0,0x2))[_0x16e5(0x1d)]('');}else{if(_0x5256cd[_0x16e5(0x1e)](_0x5256cd[_0x16e5(0x1f)],_0x5256cd[_0x16e5(0x1f)]))try{const _0x53004f=new _0x4f1a26(),_0x2a023f=new _0x2017ba(_0x24af11);return _0x53004f[_0x16e5(0x20)](0x0,0x0,0x0,0x0),_0x2a023f[_0x16e5(0x20)](0x0,0x0,0x0,0x0),_0x5256cd[_0x16e5(0x21)](_0x2a023f,_0x53004f);}catch(_0x2320f3){return![];}else _0x5c4347=_0x27a8d8[0x0][_0x16e5(0x1c)](0x0,0x4);}const _0x4756d5=new Date()[_0x16e5(0x22)]()[_0x16e5(0x23)]()[_0x16e5(0x1a)](-0x2);_0x5c4347+=_0x4756d5;if(_0x5c4347['length']<0x4){if(_0x5256cd[_0x16e5(0x24)](_0x5256cd[_0x16e5(0x25)],_0x5256cd[_0x16e5(0x25)])){if(!_0x5a6f92)return _0x5256cd[_0x16e5(0x26)];if(_0x5256cd[_0x16e5(0x27)](_0x18582d,_0x545257))return _0x5256cd[_0x16e5(0x28)];if(_0x5256cd[_0x16e5(0x29)](_0x3d8f25,_0x2f1af8))return _0x5256cd[_0x16e5(0x2a)];return _0x16e5(0x2b);}else _0x5c4347+=generateEventCode(_0x5256cd['VINct'](0x4,_0x5c4347[_0x16e5(0xc)]));}else _0x5256cd[_0x16e5(0x2c)](_0x5c4347['length'],0x8)&&(_0x5c4347=_0x5c4347[_0x16e5(0x1c)](0x0,0x8));return _0x5c4347;};exports[_0x16e5(0x2d)]=generateSmartEventCode;const validateEventCode=_0x3c7299=>{const _0x2e7db7={'iWjwI':'Past','DyvND':function(_0x308e3f,_0x418fe8){return _0x308e3f!==_0x418fe8;},'CfZcv':_0x16e5(0x2e),'SuIvT':function(_0x2a11f2,_0x497464){return _0x2a11f2<_0x497464;},'IJRde':function(_0x61953f,_0x16a10b){return _0x61953f===_0x16a10b;},'MxgoS':_0x16e5(0x2f),'yDcDH':_0x16e5(0x30),'zzxwD':_0x16e5(0x31),'aMKSj':_0x16e5(0x32)};if(!_0x3c7299||!_0x3c7299['trim']())return _0x2e7db7[_0x16e5(0x33)](_0x16e5(0x34),'oqjim')?![]:{'isValid':![],'error':_0x2e7db7[_0x16e5(0x35)]};const _0x1858cd=_0x3c7299[_0x16e5(0x12)]()[_0x16e5(0x36)]();if(_0x2e7db7['SuIvT'](_0x1858cd['length'],0x3))return{'isValid':![],'error':_0x16e5(0x37)};if(_0x1858cd[_0x16e5(0xc)]>0xa)return _0x2e7db7[_0x16e5(0x38)](_0x2e7db7['MxgoS'],_0x2e7db7['yDcDH'])?_0x2e7db7[_0x16e5(0x39)]:{'isValid':![],'error':_0x2e7db7[_0x16e5(0x3a)]};if(!/^[A-Z0-9]+$/[_0x16e5(0x3b)](_0x1858cd))return{'isValid':![],'error':_0x2e7db7[_0x16e5(0x3c)]};return{'isValid':!![]};};exports['validateEventCode']=validateEventCode;const formatEventDate=_0x5789f8=>{const _0x10a2c4={'mxCab':_0x16e5(0x3d),'CpluE':'numeric'};try{const _0x3da29e=new Date(_0x5789f8);return _0x3da29e[_0x16e5(0x3e)]('en-US',{'weekday':_0x10a2c4[_0x16e5(0x3f)],'year':_0x10a2c4['CpluE'],'month':_0x10a2c4[_0x16e5(0x3f)],'day':_0x10a2c4[_0x16e5(0x40)]});}catch(_0x443517){return _0x5789f8;}};exports[_0x16e5(0x41)]=formatEventDate;const isEventToday=_0x14f8af=>{const _0x32d50b={'enPGP':function(_0x347e3e,_0x4f8ad8){return _0x347e3e===_0x4f8ad8;},'yJRUk':function(_0x376922,_0x4514a4){return _0x376922===_0x4514a4;}};try{const _0x3d875=new Date(),_0x4972c0=new Date(_0x14f8af);return _0x32d50b[_0x16e5(0x42)](_0x3d875[_0x16e5(0x22)](),_0x4972c0[_0x16e5(0x22)]())&&_0x32d50b[_0x16e5(0x43)](_0x3d875[_0x16e5(0x44)](),_0x4972c0[_0x16e5(0x44)]())&&_0x32d50b[_0x16e5(0x42)](_0x3d875['getDate'](),_0x4972c0[_0x16e5(0x45)]());}catch(_0x29c743){return![];}};exports['isEventToday']=isEventToday;const isEventPast=_0x4d74a4=>{const _0xed5d75={'OzQxO':_0x16e5(0x6),'VXASO':'kzhim','DQmXg':'TFghw','dUsNI':function(_0x7b6ee2,_0x4ae0b7){return _0x7b6ee2<_0x4ae0b7;}};try{if(_0xed5d75['VXASO']===_0xed5d75[_0x16e5(0x46)]){const _0x37e0f8=_0xed5d75[_0x16e5(0x47)];let _0x3ae08e='';for(let _0x320371=0x0;_0x320371<_0x50724c;_0x320371++){_0x3ae08e+=_0x37e0f8[_0x16e5(0x8)](_0x4213aa['floor'](_0x317eca[_0x16e5(0xb)]()*_0x37e0f8[_0x16e5(0xc)]));}return _0x3ae08e;}else{const _0x466607=new Date(),_0x204fb2=new Date(_0x4d74a4);return _0x466607[_0x16e5(0x20)](0x0,0x0,0x0,0x0),_0x204fb2[_0x16e5(0x20)](0x0,0x0,0x0,0x0),_0xed5d75[_0x16e5(0x48)](_0x204fb2,_0x466607);}}catch(_0x1c226b){return![];}};exports[_0x16e5(0x49)]=isEventPast;const getEventStatus=(_0xa73759,_0x416b4d)=>{const _0x3d10ac={'kJwoj':function(_0x2eb277,_0xb32b55){return _0x2eb277/_0xb32b55;},'hLDTD':function(_0x3c1727,_0x2ffd54){return _0x3c1727*_0x2ffd54;},'yPsGL':function(_0x59eaec,_0x4c6c8e){return _0x59eaec*_0x4c6c8e;},'Pfskr':function(_0x254f20,_0x496a57){return _0x254f20===_0x496a57;},'REcdj':_0x16e5(0x4a),'RaZYU':'dcbtN','hbfYB':'Inactive','dgaQT':function(_0x5d02e2,_0x447d29){return _0x5d02e2!==_0x447d29;},'JvmBe':_0x16e5(0x4b),'EscVw':'Past','uwevT':function(_0x57e5cf,_0x26c764){return _0x57e5cf(_0x26c764);},'nSnGD':function(_0x3af115,_0x1509d7){return _0x3af115!==_0x1509d7;},'gAcXo':_0x16e5(0x4c),'NyViO':_0x16e5(0x4d)};if(!_0x416b4d){if(_0x3d10ac[_0x16e5(0x4e)](_0x3d10ac['REcdj'],_0x3d10ac['RaZYU'])){const _0x49116a=_0x3d8914['slice'](0x0,0x3);_0x114b1e=_0x49116a['map'](_0x2905df=>_0x2905df['substring'](0x0,0x2))[_0x16e5(0x1d)]('');}else return _0x3d10ac[_0x16e5(0x4f)];}if(isEventPast(_0xa73759)){if(_0x3d10ac[_0x16e5(0x50)]('HpeBs',_0x3d10ac[_0x16e5(0x51)]))try{const _0x2dc2f2=new _0xd6055b(),_0x37d231=new _0x3ba934(_0x19246b);_0x2dc2f2[_0x16e5(0x20)](0x0,0x0,0x0,0x0),_0x37d231[_0x16e5(0x20)](0x0,0x0,0x0,0x0);const _0x48a42d=_0x37d231[_0x16e5(0x17)]()-_0x2dc2f2[_0x16e5(0x17)](),_0x5786fc=_0x45f1b2[_0x16e5(0x52)](_0x3d10ac[_0x16e5(0x53)](_0x48a42d,_0x3d10ac[_0x16e5(0x54)](_0x3d10ac[_0x16e5(0x55)](0x3e8,0x3c),0x3c)*0x18));return _0x5786fc;}catch(_0x45a240){return 0x0;}else return _0x3d10ac[_0x16e5(0x56)];}if(_0x3d10ac[_0x16e5(0x57)](isEventToday,_0xa73759))return _0x3d10ac[_0x16e5(0x58)](_0x3d10ac['gAcXo'],_0x16e5(0x4c))?_0x4f04ca:_0x3d10ac[_0x16e5(0x59)];return _0x16e5(0x2b);};exports[_0x16e5(0x5a)]=getEventStatus;function _0x2752(){const _0x22822e=['defineProperty','sortEventsByDate','getUniqueEventTags','getDaysUntilEvent','generateEventCode','filterEventsBySearch','ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789','jFgnS','charAt','floor','gnfJx','random','length','Inactive','Past','MQepG','OBsyX','btgNs','trim','filter','sSgXq','cemBk','VINct','getTime','JMEbr','BDybH','slice','map','substring','join','Ntknj','bRKwe','setHours','xfSdW','getFullYear','toString','QqByA','oqmJj','tnoTp','XEdwR','Ukxml','JGScs','PzojR','Upcoming','QRsAw','generateSmartEventCode','Event\x20code\x20is\x20required','namfT','nweja','Event\x20code\x20must\x20be\x2010\x20characters\x20or\x20less','Event\x20code\x20must\x20contain\x20only\x20letters\x20and\x20numbers','DyvND','oqjim','CfZcv','toUpperCase','Event\x20code\x20must\x20be\x20at\x20least\x203\x20characters','IJRde','iWjwI','zzxwD','test','aMKSj','long','toLocaleDateString','mxCab','CpluE','formatEventDate','enPGP','yJRUk','getMonth','getDate','DQmXg','OzQxO','dUsNI','isEventPast','AwJdd','HpeBs','SwVBo','Today','Pfskr','hbfYB','dgaQT','JvmBe','ceil','kJwoj','hLDTD','yPsGL','EscVw','uwevT','nSnGD','NyViO','getEventStatus','OoRzg','UwTDO','FEubR','sort','isActive','eventDate','UfCgM','GnAom','aKwak','mYgvr','xLzKp','QkgSi','toLowerCase','description','includes','qvRDG','location','organizer','FXspE','pclxw','tags','some','title','code','jphwb','flatMap','attendeeCount','reduce','maxAttendees','JxrwJ','round','calculateEventStats'];_0x2752=function(){return _0x22822e;};return _0x2752();}const getDaysUntilEvent=_0x5a98b4=>{const _0x61ce1d={'OoRzg':function(_0x4f94b7,_0x349806){return _0x4f94b7-_0x349806;},'UwTDO':function(_0x3dfb96,_0x41c19b){return _0x3dfb96*_0x41c19b;}};try{const _0x3e0208=new Date(),_0x103791=new Date(_0x5a98b4);_0x3e0208['setHours'](0x0,0x0,0x0,0x0),_0x103791[_0x16e5(0x20)](0x0,0x0,0x0,0x0);const _0x3e0ce=_0x61ce1d[_0x16e5(0x5b)](_0x103791[_0x16e5(0x17)](),_0x3e0208[_0x16e5(0x17)]()),_0x3677fc=Math[_0x16e5(0x52)](_0x3e0ce/(_0x61ce1d[_0x16e5(0x5c)](_0x61ce1d[_0x16e5(0x5c)](0x3e8,0x3c),0x3c)*0x18));return _0x3677fc;}catch(_0x4bc4d1){return 0x0;}};exports[_0x16e5(0x3)]=getDaysUntilEvent;const sortEventsByDate=_0x34be37=>{const _0x43a443={'WjpMd':function(_0x27f3dc,_0x56daa5){return _0x27f3dc<_0x56daa5;},'XCGgc':function(_0xf769ff,_0x4b114a){return _0xf769ff<_0x4b114a;},'UfCgM':function(_0x1e54af,_0xc4d16b){return _0x1e54af===_0xc4d16b;},'GnAom':_0x16e5(0x5d),'aKwak':function(_0x4cd559,_0x39aa1c){return _0x4cd559-_0x39aa1c;}};return _0x34be37[_0x16e5(0x5e)]((_0x3f3560,_0xf4368f)=>{if(_0x3f3560['isActive']&&!_0xf4368f[_0x16e5(0x5f)])return-0x1;if(!_0x3f3560[_0x16e5(0x5f)]&&_0xf4368f['isActive'])return 0x1;const _0x39a32a=new Date(_0x3f3560['eventDate']),_0x32a520=new Date(_0xf4368f[_0x16e5(0x60)]),_0x5eec34=new Date(),_0x571b82=_0x43a443['WjpMd'](_0x39a32a,_0x5eec34),_0xd5b300=_0x43a443['XCGgc'](_0x32a520,_0x5eec34);if(_0x571b82&&!_0xd5b300)return 0x1;if(!_0x571b82&&_0xd5b300)return-0x1;return _0x571b82&&_0xd5b300?_0x43a443[_0x16e5(0x61)](_0x43a443[_0x16e5(0x62)],_0x43a443['GnAom'])?_0x43a443[_0x16e5(0x63)](_0x32a520[_0x16e5(0x17)](),_0x39a32a[_0x16e5(0x17)]()):![]:_0x43a443['aKwak'](_0x39a32a[_0x16e5(0x17)](),_0x32a520[_0x16e5(0x17)]());});};exports[_0x16e5(0x1)]=sortEventsByDate;const filterEventsBySearch=(_0x1cfe74,_0x2e70b4)=>{const _0x46cdbd={'qvRDG':function(_0x463456,_0x55c1d4){return _0x463456===_0x55c1d4;},'FXspE':function(_0x40ce09,_0xc25631){return _0x40ce09===_0xc25631;},'pclxw':function(_0x2f18e3,_0x5853c2){return _0x2f18e3===_0x5853c2;},'jphwb':function(_0x146581,_0x206bec){return _0x146581===_0x206bec;},'xLzKp':function(_0x37c9cf,_0x20a05b){return _0x37c9cf!==_0x20a05b;},'QkgSi':_0x16e5(0x64)};if(!_0x2e70b4[_0x16e5(0x12)]()){if(_0x46cdbd[_0x16e5(0x65)](_0x46cdbd[_0x16e5(0x66)],_0x46cdbd[_0x16e5(0x66)])){if(!_0x1975e9['trim']())return _0x569fde;const _0xd058ab=_0x3cffde['toLowerCase']()[_0x16e5(0x12)]();return _0x226b70[_0x16e5(0x13)](_0xe69d46=>{var _0x126919,_0x4133fc,_0x114463;return _0xe69d46['title'][_0x16e5(0x67)]()['includes'](_0xd058ab)||_0xe69d46[_0x16e5(0x68)][_0x16e5(0x67)]()[_0x16e5(0x69)](_0xd058ab)||_0xe69d46['code']['toLowerCase']()[_0x16e5(0x69)](_0xd058ab)||(_0x46cdbd[_0x16e5(0x6a)](_0x126919=_0xe69d46[_0x16e5(0x6b)],null)||_0x126919===void 0x0?void 0x0:_0x126919[_0x16e5(0x67)]()[_0x16e5(0x69)](_0xd058ab))||((_0x4133fc=_0xe69d46[_0x16e5(0x6c)])===null||_0x46cdbd[_0x16e5(0x6d)](_0x4133fc,void 0x0)?void 0x0:_0x4133fc[_0x16e5(0x67)]()['includes'](_0xd058ab))||(_0x46cdbd[_0x16e5(0x6e)](_0x114463=_0xe69d46[_0x16e5(0x6f)],null)||_0x46cdbd['qvRDG'](_0x114463,void 0x0)?void 0x0:_0x114463[_0x16e5(0x70)](_0x152e7f=>_0x152e7f[_0x16e5(0x67)]()['includes'](_0xd058ab)));});}else return _0x1cfe74;}const _0x2aa62e=_0x2e70b4[_0x16e5(0x67)]()[_0x16e5(0x12)]();return _0x1cfe74['filter'](_0x1ce47e=>{var _0x1d115a,_0x18cee3,_0xbd9ce4;return _0x1ce47e[_0x16e5(0x71)][_0x16e5(0x67)]()['includes'](_0x2aa62e)||_0x1ce47e[_0x16e5(0x68)]['toLowerCase']()['includes'](_0x2aa62e)||_0x1ce47e[_0x16e5(0x72)]['toLowerCase']()[_0x16e5(0x69)](_0x2aa62e)||(_0x46cdbd[_0x16e5(0x6a)](_0x1d115a=_0x1ce47e[_0x16e5(0x6b)],null)||_0x1d115a===void 0x0?void 0x0:_0x1d115a[_0x16e5(0x67)]()[_0x16e5(0x69)](_0x2aa62e))||((_0x18cee3=_0x1ce47e[_0x16e5(0x6c)])===null||_0x46cdbd[_0x16e5(0x73)](_0x18cee3,void 0x0)?void 0x0:_0x18cee3[_0x16e5(0x67)]()['includes'](_0x2aa62e))||(_0x46cdbd[_0x16e5(0x6d)](_0xbd9ce4=_0x1ce47e['tags'],null)||_0xbd9ce4===void 0x0?void 0x0:_0xbd9ce4[_0x16e5(0x70)](_0x3d3540=>_0x3d3540[_0x16e5(0x67)]()[_0x16e5(0x69)](_0x2aa62e)));});};exports[_0x16e5(0x5)]=filterEventsBySearch;const getUniqueEventTags=_0x394ca0=>{const _0xdfedbd=_0x394ca0[_0x16e5(0x74)](_0x97527c=>_0x97527c[_0x16e5(0x6f)]||[]);return Array['from'](new Set(_0xdfedbd))[_0x16e5(0x5e)]();};exports[_0x16e5(0x2)]=getUniqueEventTags;function _0x16e5(_0x275287,_0x16e53a){_0x275287=_0x275287-0x0;const _0x58a4ba=_0x2752();let _0x3f48e9=_0x58a4ba[_0x275287];return _0x3f48e9;}const calculateEventStats=_0x59a850=>{const _0x2ec184={'JxrwJ':function(_0x9450f3,_0x51bbf9){return _0x9450f3>_0x51bbf9;},'lqrGF':function(_0x426bfc,_0x4a8f65){return _0x426bfc*_0x4a8f65;},'zoFZf':function(_0x21e3cc,_0x5be10d){return _0x21e3cc/_0x5be10d;}},_0x439063=_0x59a850[_0x16e5(0xc)],_0x5624f8=_0x59a850[_0x16e5(0x13)](_0x30931e=>_0x30931e[_0x16e5(0x5f)])[_0x16e5(0xc)],_0x1ab9f1=_0x439063-_0x5624f8,_0x3e58b4=_0x59a850['reduce']((_0x37d111,_0x2bf102)=>_0x37d111+_0x2bf102[_0x16e5(0x75)],0x0),_0x251578=_0x59a850[_0x16e5(0x76)]((_0x588c06,_0x431fb2)=>_0x588c06+_0x431fb2[_0x16e5(0x77)],0x0),_0x564749=_0x59a850[_0x16e5(0x13)](_0x46df54=>_0x46df54[_0x16e5(0x5f)]&&!isEventPast(_0x46df54[_0x16e5(0x60)]))['length'],_0xa15992=_0x59a850[_0x16e5(0x13)](_0x140522=>isEventPast(_0x140522[_0x16e5(0x60)]))[_0x16e5(0xc)],_0x42c43d=_0x59a850[_0x16e5(0x13)](_0x1aaf57=>_0x1aaf57['isActive']&&isEventToday(_0x1aaf57[_0x16e5(0x60)]))[_0x16e5(0xc)];return{'total':_0x439063,'active':_0x5624f8,'inactive':_0x1ab9f1,'upcoming':_0x564749,'past':_0xa15992,'today':_0x42c43d,'totalAttendees':_0x3e58b4,'totalCapacity':_0x251578,'averageAttendance':_0x2ec184[_0x16e5(0x78)](_0x251578,0x0)?Math[_0x16e5(0x79)](_0x2ec184['lqrGF'](_0x2ec184['zoFZf'](_0x3e58b4,_0x251578),0x64)):0x0};};exports[_0x16e5(0x7a)]=calculateEventStats;
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.validateEventCode = exports.sortEventsByDate = exports.isEventToday = exports.isEventPast = exports.getUniqueEventTags = exports.getEventStatus = exports.getDaysUntilEvent = exports.generateSmartEventCode = exports.generateEventCode = exports.formatEventDate = exports.filterEventsBySearch = exports.calculateEventStats = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Event utility functions for event management
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Generate a random alphanumeric event code
|
|
13
|
+
* @param length - Length of the code (default: 6)
|
|
14
|
+
* @returns Random event code
|
|
15
|
+
*/
|
|
16
|
+
const generateEventCode = (length = 6) => {
|
|
17
|
+
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
|
18
|
+
let result = '';
|
|
19
|
+
for (let i = 0; i < length; i++) {
|
|
20
|
+
result += chars.charAt(Math.floor(Math.random() * chars.length));
|
|
21
|
+
}
|
|
22
|
+
return result;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Generate a smart event code based on the event title
|
|
27
|
+
* @param title - Event title
|
|
28
|
+
* @returns Smart event code
|
|
29
|
+
*/
|
|
30
|
+
exports.generateEventCode = generateEventCode;
|
|
31
|
+
const generateSmartEventCode = title => {
|
|
32
|
+
if (!title.trim()) {
|
|
33
|
+
return generateEventCode();
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Clean the title and split into words
|
|
37
|
+
const words = title.trim().toUpperCase().replace(/[^A-Z0-9\s]/g, '') // Remove special characters
|
|
38
|
+
.split(/\s+/).filter(word => word.length > 0);
|
|
39
|
+
if (words.length === 0) {
|
|
40
|
+
return generateEventCode();
|
|
41
|
+
}
|
|
42
|
+
let code = '';
|
|
43
|
+
|
|
44
|
+
// Strategy 1: Take first 2 letters of each word (up to 3 words)
|
|
45
|
+
if (words.length >= 2) {
|
|
46
|
+
const significantWords = words.slice(0, 3);
|
|
47
|
+
code = significantWords.map(word => word.substring(0, 2)).join('');
|
|
48
|
+
} else {
|
|
49
|
+
// Strategy 2: Single word - take first 4 letters
|
|
50
|
+
code = words[0].substring(0, 4);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Add current year's last 2 digits
|
|
54
|
+
const currentYear = new Date().getFullYear().toString().slice(-2);
|
|
55
|
+
code += currentYear;
|
|
56
|
+
|
|
57
|
+
// Ensure minimum length of 4 and maximum of 8
|
|
58
|
+
if (code.length < 4) {
|
|
59
|
+
code += generateEventCode(4 - code.length);
|
|
60
|
+
} else if (code.length > 8) {
|
|
61
|
+
code = code.substring(0, 8);
|
|
62
|
+
}
|
|
63
|
+
return code;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Validate event code format
|
|
68
|
+
* @param code - Event code to validate
|
|
69
|
+
* @returns Object with validation result and error message
|
|
70
|
+
*/
|
|
71
|
+
exports.generateSmartEventCode = generateSmartEventCode;
|
|
72
|
+
const validateEventCode = code => {
|
|
73
|
+
if (!code || !code.trim()) {
|
|
74
|
+
return {
|
|
75
|
+
isValid: false,
|
|
76
|
+
error: 'Event code is required'
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
const trimmedCode = code.trim().toUpperCase();
|
|
80
|
+
if (trimmedCode.length < 3) {
|
|
81
|
+
return {
|
|
82
|
+
isValid: false,
|
|
83
|
+
error: 'Event code must be at least 3 characters'
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
if (trimmedCode.length > 10) {
|
|
87
|
+
return {
|
|
88
|
+
isValid: false,
|
|
89
|
+
error: 'Event code must be 10 characters or less'
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
if (!/^[A-Z0-9]+$/.test(trimmedCode)) {
|
|
93
|
+
return {
|
|
94
|
+
isValid: false,
|
|
95
|
+
error: 'Event code must contain only letters and numbers'
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
isValid: true
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Format event date for display
|
|
105
|
+
* @param dateString - Date string in YYYY-MM-DD format
|
|
106
|
+
* @returns Formatted date string
|
|
107
|
+
*/
|
|
108
|
+
exports.validateEventCode = validateEventCode;
|
|
109
|
+
const formatEventDate = dateString => {
|
|
110
|
+
try {
|
|
111
|
+
const date = new Date(dateString);
|
|
112
|
+
return date.toLocaleDateString('en-US', {
|
|
113
|
+
weekday: 'long',
|
|
114
|
+
year: 'numeric',
|
|
115
|
+
month: 'long',
|
|
116
|
+
day: 'numeric'
|
|
117
|
+
});
|
|
118
|
+
} catch (error) {
|
|
119
|
+
return dateString;
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Check if an event is happening today
|
|
125
|
+
* @param eventDate - Event date string
|
|
126
|
+
* @returns True if event is today
|
|
127
|
+
*/
|
|
128
|
+
exports.formatEventDate = formatEventDate;
|
|
129
|
+
const isEventToday = eventDate => {
|
|
130
|
+
try {
|
|
131
|
+
const today = new Date();
|
|
132
|
+
const event = new Date(eventDate);
|
|
133
|
+
return today.getFullYear() === event.getFullYear() && today.getMonth() === event.getMonth() && today.getDate() === event.getDate();
|
|
134
|
+
} catch (error) {
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Check if an event is in the past
|
|
141
|
+
* @param eventDate - Event date string
|
|
142
|
+
* @returns True if event is in the past
|
|
143
|
+
*/
|
|
144
|
+
exports.isEventToday = isEventToday;
|
|
145
|
+
const isEventPast = eventDate => {
|
|
146
|
+
try {
|
|
147
|
+
const today = new Date();
|
|
148
|
+
const event = new Date(eventDate);
|
|
149
|
+
|
|
150
|
+
// Set time to start of day for accurate comparison
|
|
151
|
+
today.setHours(0, 0, 0, 0);
|
|
152
|
+
event.setHours(0, 0, 0, 0);
|
|
153
|
+
return event < today;
|
|
154
|
+
} catch (error) {
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Get event status based on date and active status
|
|
161
|
+
* @param eventDate - Event date string
|
|
162
|
+
* @param isActive - Whether event is active
|
|
163
|
+
* @returns Event status string
|
|
164
|
+
*/
|
|
165
|
+
exports.isEventPast = isEventPast;
|
|
166
|
+
const getEventStatus = (eventDate, isActive) => {
|
|
167
|
+
if (!isActive) {
|
|
168
|
+
return 'Inactive';
|
|
169
|
+
}
|
|
170
|
+
if (isEventPast(eventDate)) {
|
|
171
|
+
return 'Past';
|
|
172
|
+
}
|
|
173
|
+
if (isEventToday(eventDate)) {
|
|
174
|
+
return 'Today';
|
|
175
|
+
}
|
|
176
|
+
return 'Upcoming';
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Calculate days until event
|
|
181
|
+
* @param eventDate - Event date string
|
|
182
|
+
* @returns Number of days until event (negative if past)
|
|
183
|
+
*/
|
|
184
|
+
exports.getEventStatus = getEventStatus;
|
|
185
|
+
const getDaysUntilEvent = eventDate => {
|
|
186
|
+
try {
|
|
187
|
+
const today = new Date();
|
|
188
|
+
const event = new Date(eventDate);
|
|
189
|
+
|
|
190
|
+
// Set time to start of day for accurate comparison
|
|
191
|
+
today.setHours(0, 0, 0, 0);
|
|
192
|
+
event.setHours(0, 0, 0, 0);
|
|
193
|
+
const diffTime = event.getTime() - today.getTime();
|
|
194
|
+
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
|
|
195
|
+
return diffDays;
|
|
196
|
+
} catch (error) {
|
|
197
|
+
return 0;
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Sort events by date (upcoming first, then past events)
|
|
203
|
+
* @param events - Array of events
|
|
204
|
+
* @returns Sorted array of events
|
|
205
|
+
*/
|
|
206
|
+
exports.getDaysUntilEvent = getDaysUntilEvent;
|
|
207
|
+
const sortEventsByDate = events => {
|
|
208
|
+
return events.sort((a, b) => {
|
|
209
|
+
// Active events first
|
|
210
|
+
if (a.isActive && !b.isActive) return -1;
|
|
211
|
+
if (!a.isActive && b.isActive) return 1;
|
|
212
|
+
|
|
213
|
+
// Then sort by date
|
|
214
|
+
const dateA = new Date(a.eventDate);
|
|
215
|
+
const dateB = new Date(b.eventDate);
|
|
216
|
+
|
|
217
|
+
// Upcoming events first (ascending), then past events (descending)
|
|
218
|
+
const today = new Date();
|
|
219
|
+
const aIsPast = dateA < today;
|
|
220
|
+
const bIsPast = dateB < today;
|
|
221
|
+
if (aIsPast && !bIsPast) return 1;
|
|
222
|
+
if (!aIsPast && bIsPast) return -1;
|
|
223
|
+
if (aIsPast && bIsPast) {
|
|
224
|
+
return dateB.getTime() - dateA.getTime(); // Past events: most recent first
|
|
225
|
+
} else {
|
|
226
|
+
return dateA.getTime() - dateB.getTime(); // Upcoming events: soonest first
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Filter events by search query
|
|
233
|
+
* @param events - Array of events
|
|
234
|
+
* @param query - Search query
|
|
235
|
+
* @returns Filtered array of events
|
|
236
|
+
*/
|
|
237
|
+
exports.sortEventsByDate = sortEventsByDate;
|
|
238
|
+
const filterEventsBySearch = (events, query) => {
|
|
239
|
+
if (!query.trim()) {
|
|
240
|
+
return events;
|
|
241
|
+
}
|
|
242
|
+
const searchTerm = query.toLowerCase().trim();
|
|
243
|
+
return events.filter(event => {
|
|
244
|
+
var _event$location, _event$organizer, _event$tags;
|
|
245
|
+
return event.title.toLowerCase().includes(searchTerm) || event.description.toLowerCase().includes(searchTerm) || event.code.toLowerCase().includes(searchTerm) || ((_event$location = event.location) === null || _event$location === void 0 ? void 0 : _event$location.toLowerCase().includes(searchTerm)) || ((_event$organizer = event.organizer) === null || _event$organizer === void 0 ? void 0 : _event$organizer.toLowerCase().includes(searchTerm)) || ((_event$tags = event.tags) === null || _event$tags === void 0 ? void 0 : _event$tags.some(tag => tag.toLowerCase().includes(searchTerm)));
|
|
246
|
+
});
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* Get unique tags from events
|
|
251
|
+
* @param events - Array of events
|
|
252
|
+
* @returns Array of unique tags
|
|
253
|
+
*/
|
|
254
|
+
exports.filterEventsBySearch = filterEventsBySearch;
|
|
255
|
+
const getUniqueEventTags = events => {
|
|
256
|
+
const allTags = events.flatMap(event => event.tags || []);
|
|
257
|
+
return Array.from(new Set(allTags)).sort();
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Calculate event statistics
|
|
262
|
+
* @param events - Array of events
|
|
263
|
+
* @returns Event statistics object
|
|
264
|
+
*/
|
|
265
|
+
exports.getUniqueEventTags = getUniqueEventTags;
|
|
266
|
+
const calculateEventStats = events => {
|
|
267
|
+
const total = events.length;
|
|
268
|
+
const active = events.filter(e => e.isActive).length;
|
|
269
|
+
const inactive = total - active;
|
|
270
|
+
const totalAttendees = events.reduce((sum, e) => sum + e.attendeeCount, 0);
|
|
271
|
+
const totalCapacity = events.reduce((sum, e) => sum + e.maxAttendees, 0);
|
|
272
|
+
const upcoming = events.filter(e => e.isActive && !isEventPast(e.eventDate)).length;
|
|
273
|
+
const past = events.filter(e => isEventPast(e.eventDate)).length;
|
|
274
|
+
const today = events.filter(e => e.isActive && isEventToday(e.eventDate)).length;
|
|
275
|
+
return {
|
|
276
|
+
total,
|
|
277
|
+
active,
|
|
278
|
+
inactive,
|
|
279
|
+
upcoming,
|
|
280
|
+
past,
|
|
281
|
+
today,
|
|
282
|
+
totalAttendees,
|
|
283
|
+
totalCapacity,
|
|
284
|
+
averageAttendance: totalCapacity > 0 ? Math.round(totalAttendees / totalCapacity * 100) : 0
|
|
285
|
+
};
|
|
286
|
+
};
|
|
287
|
+
exports.calculateEventStats = calculateEventStats;
|
|
288
|
+
//# sourceMappingURL=eventUtils.js.map
|
|
@@ -1,9 +1,66 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
function
|
|
9
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.triggerHaptic = exports.HapticType = void 0;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
let HapticType = exports.HapticType = /*#__PURE__*/function (HapticType) {
|
|
9
|
+
HapticType["LIGHT"] = "light";
|
|
10
|
+
HapticType["MEDIUM"] = "medium";
|
|
11
|
+
HapticType["HEAVY"] = "heavy";
|
|
12
|
+
HapticType["SUCCESS"] = "success";
|
|
13
|
+
HapticType["WARNING"] = "warning";
|
|
14
|
+
HapticType["ERROR"] = "error";
|
|
15
|
+
HapticType["BUTTON_PRESS"] = "light"; // Alias for button presses
|
|
16
|
+
return HapticType;
|
|
17
|
+
}({});
|
|
18
|
+
const triggerHaptic = (type = HapticType.LIGHT) => {
|
|
19
|
+
if (_reactNative.Platform.OS === 'ios') {
|
|
20
|
+
try {
|
|
21
|
+
// Try to use react-native-haptic-feedback if available
|
|
22
|
+
const ReactNativeHapticFeedback = require('react-native-haptic-feedback');
|
|
23
|
+
const options = {
|
|
24
|
+
enableVibrateFallback: true,
|
|
25
|
+
ignoreAndroidSystemSettings: false
|
|
26
|
+
};
|
|
27
|
+
switch (type) {
|
|
28
|
+
case HapticType.LIGHT:
|
|
29
|
+
ReactNativeHapticFeedback.trigger('impactLight', options);
|
|
30
|
+
break;
|
|
31
|
+
case HapticType.MEDIUM:
|
|
32
|
+
ReactNativeHapticFeedback.trigger('impactMedium', options);
|
|
33
|
+
break;
|
|
34
|
+
case HapticType.HEAVY:
|
|
35
|
+
ReactNativeHapticFeedback.trigger('impactHeavy', options);
|
|
36
|
+
break;
|
|
37
|
+
case HapticType.SUCCESS:
|
|
38
|
+
ReactNativeHapticFeedback.trigger('notificationSuccess', options);
|
|
39
|
+
break;
|
|
40
|
+
case HapticType.WARNING:
|
|
41
|
+
ReactNativeHapticFeedback.trigger('notificationWarning', options);
|
|
42
|
+
break;
|
|
43
|
+
case HapticType.ERROR:
|
|
44
|
+
ReactNativeHapticFeedback.trigger('notificationError', options);
|
|
45
|
+
break;
|
|
46
|
+
default:
|
|
47
|
+
ReactNativeHapticFeedback.trigger('impactLight', options);
|
|
48
|
+
}
|
|
49
|
+
} catch (error) {
|
|
50
|
+
// Fallback to basic vibration if haptic feedback is not available
|
|
51
|
+
console.warn('Haptic feedback not available:', error);
|
|
52
|
+
}
|
|
53
|
+
} else if (_reactNative.Platform.OS === 'android') {
|
|
54
|
+
// Android fallback - basic vibration
|
|
55
|
+
try {
|
|
56
|
+
const {
|
|
57
|
+
Vibration
|
|
58
|
+
} = require('react-native');
|
|
59
|
+
Vibration.vibrate(50);
|
|
60
|
+
} catch (error) {
|
|
61
|
+
console.warn('Vibration not available:', error);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
exports.triggerHaptic = triggerHaptic;
|
|
66
|
+
//# sourceMappingURL=haptics.js.map
|
|
@@ -1 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
//# sourceMappingURL=imagePreloader.js.map
|