@onairos/react-native 3.0.9 → 3.0.10
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/assets/images/onairos_logo.svg +6 -0
- package/lib/commonjs/components/Onairos.js +214 -60
- package/lib/commonjs/components/Onairos.js.map +1 -1
- package/lib/commonjs/components/OnairosButton.js +105 -42
- package/lib/commonjs/components/OnairosButton.js.map +1 -1
- package/lib/commonjs/components/UniversalOnboarding.js +98 -26
- package/lib/commonjs/components/UniversalOnboarding.js.map +1 -1
- package/lib/module/assets/images/onairos_logo.svg +6 -0
- package/lib/module/components/Onairos.js +217 -62
- package/lib/module/components/Onairos.js.map +1 -1
- package/lib/module/components/OnairosButton.js +107 -43
- package/lib/module/components/OnairosButton.js.map +1 -1
- package/lib/module/components/UniversalOnboarding.js +100 -28
- package/lib/module/components/UniversalOnboarding.js.map +1 -1
- package/lib/module/index.js +10 -9
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/components/Onairos.d.ts +26 -24
- package/lib/typescript/components/Onairos.d.ts.map +1 -1
- package/lib/typescript/components/OnairosButton.d.ts +5 -1
- package/lib/typescript/components/OnairosButton.d.ts.map +1 -1
- package/lib/typescript/components/UniversalOnboarding.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +2 -1
- package/lib/typescript/types.d.ts.map +1 -1
- package/package.json +5 -3
- package/src/assets/images/onairos_logo.svg +6 -0
- package/src/components/Onairos.tsx +283 -89
- package/src/components/OnairosButton.tsx +110 -46
- package/src/components/UniversalOnboarding.tsx +105 -28
- package/src/types.ts +2 -1
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["OnairosButton","
|
|
1
|
+
{"version":3,"names":["Onairos","OnairosButton","Overlay","UniversalOnboarding","OnairosOverlay","Portal","PortalHost","ConnectorScreen","PinCreationScreen","LoadingScreen","OAuthWebView","PlatformConnector","OnboardingHeader","PinInput","useCredentials","useConnections","storeCredentials","getCredentials","hasCredentials","deleteCredentials","updateCredentials","generateDeviceUsername","verifyCredentials","validateCredentials","createAccount","authenticate","refreshToken","getPlatformData","getUserProfile","updatePlatformConnections","rsaEncrypt","sha256","base64ToBuffer","logDebug","logError","isDebugMode","connectPlatform","disconnectPlatform","initializeOAuthService","cleanupOAuthService","storePlatformConnection","COLORS","PLATFORMS","API_ENDPOINTS","STORAGE_KEYS","PIN_REQUIREMENTS","DEEP_LINK_CONFIG","onairosApi","OAuthService","components"],"sourceRoot":"..\\..\\src","sources":["index.ts"],"mappings":"AAAA;AACA;AACA;AACA;;AAEA;AACA,SAASA,OAAO,QAAQ,sBAAsB;AAC9C,SAASC,aAAa,QAAQ,4BAA4B;AAC1D,SAASC,OAAO,QAAQ,sBAAsB;AAC9C,SAASC,mBAAmB,QAAQ,kCAAkC;;AAEtE;AACA,SAASH,OAAO,QAAQ,sBAAsB;AAC9C,SAASC,aAAa,QAAQ,4BAA4B;AAC1D,SAASC,OAAO,IAAIE,cAAc,QAAQ,sBAAsB;AAChE,SAASD,mBAAmB,QAAQ,kCAAkC;;AAEtE;AACA,SAASE,MAAM,EAAEC,UAAU,QAAQ,gBAAgB;;AAEnD;AACA,SAASC,eAAe,QAAQ,sCAAsC;AACtE,SAASC,iBAAiB,QAAQ,wCAAwC;AAC1E,SAASC,aAAa,QAAQ,oCAAoC;;AAElE;AACA,SAASC,YAAY,QAAQ,sCAAsC;AACnE,SAASC,iBAAiB,QAAQ,2CAA2C;AAC7E,SAASC,gBAAgB,QAAQ,0CAA0C;AAC3E,SAASC,QAAQ,QAAQ,kCAAkC;;AAE3D;AACA,SAASC,cAAc,QAAQ,wBAAwB;AACvD,SAASC,cAAc,QAAQ,wBAAwB;;AAEvD;AACA,SACEC,gBAAgB,EAChBC,cAAc,EACdC,cAAc,EACdC,iBAAiB,EACjBC,iBAAiB,EACjBC,sBAAsB,EACtBC,iBAAiB,QACZ,uBAAuB;AAE9B,SACEC,mBAAmB,EACnBC,aAAa,EACbC,YAAY,EACZC,YAAY,EACZC,eAAe,EACfC,cAAc,EACdC,yBAAyB,QACpB,oBAAoB;AAE3B,SACEC,UAAU,EACVC,MAAM,EACNC,cAAc,QACT,gBAAgB;AAEvB,SACEC,QAAQ,EACRC,QAAQ,EACRC,WAAW,QACN,qBAAqB;;AAE5B;AACA,SACEC,eAAe,EACfC,kBAAkB,EAClBC,sBAAsB,EACtBC,mBAAmB,EACnBC,uBAAuB,QAClB,yBAAyB;;AAEhC;;AAsBA;AACA,SAASC,MAAM,EAAEC,SAAS,EAAEC,aAAa,EAAEC,YAAY,EAAEC,gBAAgB,EAAEC,gBAAgB,QAAQ,aAAa;;AAEhH;AACA,SAASC,UAAU,QAAQ,OAAO;AAClC,SAASC,YAAY,QAAQ,yBAAyB;AACtD,cAAc,uBAAuB;AACrC,cAAc,oBAAoB;;AAElC;;AAGA,SAAS1C,UAAU,QAAQ,gBAAgB;AAK3C;AACA,MAAM2C,UAAU,GAAG;EACjBjD,OAAO,EAAEA,OAA2B;EACpCC,aAAa,EAAEA,aAAwD;EACvEG,cAAc,EAAEF,OAA2B;EAC3CC,mBAAmB,EAAEA,mBAAoE;EACzFG,UAAU,EAAEA;AACd,CAAC;;AAED;AACA,eAAe2C,UAAU","ignoreList":[]}
|
|
@@ -1,29 +1,31 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
2
|
+
import { DataTier } from '../types';
|
|
3
|
+
interface OnairosProps {
|
|
4
|
+
returnLink?: string;
|
|
5
|
+
prefillUrl?: string;
|
|
6
|
+
AppName: string;
|
|
7
|
+
buttonType?: 'normal' | 'pill';
|
|
8
|
+
requestData?: {
|
|
9
|
+
[key: string]: DataTier;
|
|
10
|
+
};
|
|
11
|
+
buttonWidth?: number;
|
|
12
|
+
buttonHeight?: number;
|
|
13
|
+
hasStroke?: boolean;
|
|
14
|
+
enabled?: boolean;
|
|
15
|
+
buttonForm?: 'default' | 'connect';
|
|
15
16
|
onRejection?: (error?: string) => void;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
onResolved?: (apiUrl: string, token: string, userData: any) => void;
|
|
18
|
+
preCheck?: () => Promise<boolean>;
|
|
19
|
+
color?: string;
|
|
20
|
+
debug?: boolean;
|
|
21
|
+
darkMode?: boolean;
|
|
22
|
+
preferredPlatform?: string;
|
|
19
23
|
testMode?: boolean;
|
|
20
|
-
/**
|
|
21
|
-
* Optional style for the container
|
|
22
|
-
*/
|
|
23
|
-
containerStyle?: any;
|
|
24
24
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
export interface OnairosRef {
|
|
26
|
+
trigger: () => Promise<void>;
|
|
27
|
+
reset: () => Promise<void>;
|
|
28
|
+
}
|
|
29
|
+
export declare const Onairos: React.ForwardRefExoticComponent<OnairosProps & React.RefAttributes<OnairosRef>>;
|
|
30
|
+
export {};
|
|
29
31
|
//# sourceMappingURL=Onairos.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Onairos.d.ts","sourceRoot":"","sources":["../../../src/components/Onairos.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Onairos.d.ts","sourceRoot":"","sources":["../../../src/components/Onairos.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiE,MAAM,OAAO,CAAC;AAiBtF,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAUpC,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC/B,WAAW,CAAC,EAAE;QACZ,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC;KACzB,CAAC;IACF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IACnC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,IAAI,CAAC;IACpE,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED,eAAO,MAAM,OAAO,iFAmOlB,CAAC"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { OnairosButtonProps } from '../types';
|
|
3
|
+
export interface OnairosButtonRef {
|
|
4
|
+
trigger: () => Promise<void>;
|
|
5
|
+
reset: () => Promise<void>;
|
|
6
|
+
}
|
|
3
7
|
/**
|
|
4
8
|
* OnairosButton Component - A sign-in button similar to Google/Apple sign-in
|
|
5
9
|
*/
|
|
6
|
-
export declare const OnairosButton: React.
|
|
10
|
+
export declare const OnairosButton: React.ForwardRefExoticComponent<OnairosButtonProps & React.RefAttributes<OnairosButtonRef>>;
|
|
7
11
|
//# sourceMappingURL=OnairosButton.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnairosButton.d.ts","sourceRoot":"","sources":["../../../src/components/OnairosButton.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"OnairosButton.d.ts","sourceRoot":"","sources":["../../../src/components/OnairosButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiE,MAAM,OAAO,CAAC;AActF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAanD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,6FA4OxB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UniversalOnboarding.d.ts","sourceRoot":"","sources":["../../../src/components/UniversalOnboarding.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"UniversalOnboarding.d.ts","sourceRoot":"","sources":["../../../src/components/UniversalOnboarding.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAoBhE,OAAO,KAAK,EAAE,wBAAwB,EAAoB,MAAM,UAAU,CAAC;AAI3E,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAuNlE,CAAC"}
|
|
@@ -41,13 +41,14 @@ export interface OnairosButtonProps {
|
|
|
41
41
|
buttonHeight?: number;
|
|
42
42
|
hasStroke?: boolean;
|
|
43
43
|
enabled?: boolean;
|
|
44
|
-
buttonForm?: 'default' | 'login' | 'signup';
|
|
44
|
+
buttonForm?: 'default' | 'login' | 'signup' | 'connect';
|
|
45
45
|
onRejection?: (error?: string) => void;
|
|
46
46
|
onResolved?: (apiUrl: string, token: string, userData: any) => void;
|
|
47
47
|
preCheck?: () => Promise<boolean>;
|
|
48
48
|
color?: string;
|
|
49
49
|
swerv?: boolean;
|
|
50
50
|
debug?: boolean;
|
|
51
|
+
darkMode?: boolean;
|
|
51
52
|
preferredPlatform?: string;
|
|
52
53
|
testMode?: boolean;
|
|
53
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE;QACX,KAAK,EAAE,QAAQ,CAAC;QAChB,MAAM,EAAE,QAAQ,CAAC;QACjB,KAAK,EAAE,QAAQ,CAAC;KACjB,CAAC;IACF,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAChC,UAAU,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC/B,WAAW,CAAC,EAAE;QACZ,KAAK,EAAE,QAAQ,CAAC;QAChB,MAAM,EAAE,QAAQ,CAAC;QACjB,KAAK,EAAE,QAAQ,CAAC;KACjB,CAAC;IACF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onairos/react-native",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.10",
|
|
4
4
|
"description": "Onairos React Native SDK for social media authentication and AI model training",
|
|
5
5
|
"main": "lib/commonjs/index.js",
|
|
6
6
|
"module": "lib/module/index.js",
|
|
@@ -63,7 +63,6 @@
|
|
|
63
63
|
"registry": "https://registry.npmjs.org/"
|
|
64
64
|
},
|
|
65
65
|
"dependencies": {
|
|
66
|
-
"@gorhom/bottom-sheet": "^4",
|
|
67
66
|
"@react-native-community/netinfo": "^9.0.0",
|
|
68
67
|
"axios": "^1.6.2",
|
|
69
68
|
"react-native-crypto-js": "^1.0.0",
|
|
@@ -73,6 +72,7 @@
|
|
|
73
72
|
"react-native-reanimated": "^2.0.0",
|
|
74
73
|
"react-native-rsa-native": "^2.0.0",
|
|
75
74
|
"react-native-safe-area-context": "^4.0.0",
|
|
75
|
+
"react-native-svg": "^15.12.0",
|
|
76
76
|
"react-native-vector-icons": "^9.0.0",
|
|
77
77
|
"react-native-webview": "^11.0.0"
|
|
78
78
|
},
|
|
@@ -122,7 +122,9 @@
|
|
|
122
122
|
"typescript",
|
|
123
123
|
{
|
|
124
124
|
"project": "tsconfig.build.json",
|
|
125
|
-
"tscFlags": [
|
|
125
|
+
"tscFlags": [
|
|
126
|
+
"--skipLibCheck"
|
|
127
|
+
]
|
|
126
128
|
}
|
|
127
129
|
]
|
|
128
130
|
]
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect width="40" height="40" rx="8" fill="currentColor"/>
|
|
3
|
+
<path d="M20 10C14.48 10 10 14.48 10 20C10 25.52 14.48 30 20 30C25.52 30 30 25.52 30 20C30 14.48 25.52 10 20 10ZM20 28C15.59 28 12 24.41 12 20C12 15.59 15.59 12 20 12C24.41 12 28 15.59 28 20C28 24.41 24.41 28 20 28Z" fill="white"/>
|
|
4
|
+
<path d="M20 15C18.9 15 18 15.9 18 17V19C18 20.1 18.9 21 20 21C21.1 21 22 20.1 22 19V17C22 15.9 21.1 15 20 15Z" fill="white"/>
|
|
5
|
+
<path d="M20 24C19.448 24 19 24.448 19 25C19 25.552 19.448 26 20 26C20.552 26 21 25.552 21 25C21 24.448 20.552 24 20 24Z" fill="white"/>
|
|
6
|
+
</svg>
|
|
@@ -1,117 +1,311 @@
|
|
|
1
|
-
import React, { useState, useCallback
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
1
|
+
import React, { forwardRef, useImperativeHandle, useState, useCallback } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
StyleSheet,
|
|
4
|
+
View,
|
|
5
|
+
TouchableOpacity,
|
|
6
|
+
Text,
|
|
7
|
+
ViewStyle,
|
|
8
|
+
TextStyle,
|
|
9
|
+
Platform,
|
|
10
|
+
} from 'react-native';
|
|
11
|
+
import { SvgXml } from 'react-native-svg';
|
|
12
|
+
import { UniversalOnboarding } from './UniversalOnboarding';
|
|
13
|
+
import { Overlay } from './Overlay';
|
|
14
|
+
import { COLORS } from '../constants';
|
|
15
|
+
import { hasCredentials, getCredentials, deleteCredentials } from '../utils/secureStorage';
|
|
16
|
+
import { onairosApi } from '../api';
|
|
17
|
+
import { Portal } from '../utils/Portal';
|
|
18
|
+
import { DataTier } from '../types';
|
|
19
|
+
|
|
20
|
+
// Import the Onairos logo SVG
|
|
21
|
+
const onairosLogoSvg = `<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
22
|
+
<rect width="40" height="40" rx="8" fill="currentColor"/>
|
|
23
|
+
<path d="M20 10C14.48 10 10 14.48 10 20C10 25.52 14.48 30 20 30C25.52 30 30 25.52 30 20C30 14.48 25.52 10 20 10ZM20 28C15.59 28 12 24.41 12 20C12 15.59 15.59 12 20 12C24.41 12 28 15.59 28 20C28 24.41 24.41 28 20 28Z" fill="white"/>
|
|
24
|
+
<path d="M20 15C18.9 15 18 15.9 18 17V19C18 20.1 18.9 21 20 21C21.1 21 22 20.1 22 19V17C22 15.9 21.1 15 20 15Z" fill="white"/>
|
|
25
|
+
<path d="M20 24C19.448 24 19 24.448 19 25C19 25.552 19.448 26 20 26C20.552 26 21 25.552 21 25C21 24.448 20.552 24 20 24Z" fill="white"/>
|
|
26
|
+
</svg>`;
|
|
27
|
+
|
|
28
|
+
interface OnairosProps {
|
|
29
|
+
returnLink?: string;
|
|
30
|
+
prefillUrl?: string;
|
|
31
|
+
AppName: string;
|
|
32
|
+
buttonType?: 'normal' | 'pill';
|
|
33
|
+
requestData?: {
|
|
34
|
+
[key: string]: DataTier;
|
|
35
|
+
};
|
|
36
|
+
buttonWidth?: number;
|
|
37
|
+
buttonHeight?: number;
|
|
38
|
+
hasStroke?: boolean;
|
|
39
|
+
enabled?: boolean;
|
|
40
|
+
buttonForm?: 'default' | 'connect';
|
|
20
41
|
onRejection?: (error?: string) => void;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
42
|
+
onResolved?: (apiUrl: string, token: string, userData: any) => void;
|
|
43
|
+
preCheck?: () => Promise<boolean>;
|
|
44
|
+
color?: string;
|
|
45
|
+
debug?: boolean;
|
|
46
|
+
darkMode?: boolean;
|
|
47
|
+
preferredPlatform?: string;
|
|
25
48
|
testMode?: boolean;
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Optional style for the container
|
|
29
|
-
*/
|
|
30
|
-
containerStyle?: any;
|
|
31
49
|
}
|
|
32
50
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
51
|
+
export interface OnairosRef {
|
|
52
|
+
trigger: () => Promise<void>;
|
|
53
|
+
reset: () => Promise<void>;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export const Onairos = forwardRef<OnairosRef, OnairosProps>(({
|
|
38
57
|
returnLink,
|
|
39
|
-
|
|
58
|
+
prefillUrl,
|
|
59
|
+
AppName,
|
|
40
60
|
buttonType = 'normal',
|
|
41
|
-
|
|
42
|
-
buttonWidth,
|
|
61
|
+
requestData,
|
|
62
|
+
buttonWidth = 180,
|
|
43
63
|
buttonHeight,
|
|
64
|
+
hasStroke = false,
|
|
65
|
+
enabled = true,
|
|
66
|
+
buttonForm = 'default',
|
|
67
|
+
onRejection,
|
|
68
|
+
onResolved,
|
|
69
|
+
preCheck,
|
|
44
70
|
color,
|
|
45
|
-
|
|
71
|
+
debug = false,
|
|
72
|
+
darkMode = false,
|
|
46
73
|
preferredPlatform,
|
|
47
|
-
onResolved,
|
|
48
|
-
onRejection,
|
|
49
74
|
testMode = false,
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
const [
|
|
53
|
-
const [
|
|
75
|
+
}, ref) => {
|
|
76
|
+
const [showOnboarding, setShowOnboarding] = useState(false);
|
|
77
|
+
const [showOverlay, setShowOverlay] = useState(false);
|
|
78
|
+
const [storedCredentials, setStoredCredentials] = useState<any>(null);
|
|
79
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
80
|
+
const [isPressed, setIsPressed] = useState(false);
|
|
54
81
|
|
|
55
|
-
|
|
82
|
+
// Expose methods for external control
|
|
83
|
+
useImperativeHandle(ref, () => ({
|
|
84
|
+
trigger: async () => {
|
|
85
|
+
await handlePress();
|
|
86
|
+
},
|
|
87
|
+
reset: async () => {
|
|
88
|
+
await deleteCredentials();
|
|
89
|
+
}
|
|
90
|
+
}));
|
|
91
|
+
|
|
92
|
+
// Compute button text based on buttonForm
|
|
93
|
+
const getButtonText = () => {
|
|
94
|
+
if (buttonForm === 'connect') {
|
|
95
|
+
return 'Connect with Onairos';
|
|
96
|
+
} else {
|
|
97
|
+
return 'Sign in with Onairos';
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
// Calculate background color based on props and state
|
|
102
|
+
const getBackgroundColor = (): string => {
|
|
103
|
+
if (!enabled) {
|
|
104
|
+
return darkMode ? '#3A3A3A' : '#e0e0e0';
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
if (isPressed) {
|
|
108
|
+
return color ?
|
|
109
|
+
(typeof color === 'string' ? `${color}80` : color) :
|
|
110
|
+
(darkMode ? '#32323280' : '#f5f5f580');
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return color || (darkMode ? '#2A2A2A' : '#ffffff');
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
// Calculate text color based on background luminance
|
|
117
|
+
const getTextColor = (): string => {
|
|
118
|
+
if (!enabled) {
|
|
119
|
+
return darkMode ? '#777777' : '#AAAAAA';
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
if (darkMode) {
|
|
123
|
+
return '#FFFFFF';
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
const bgColor = getBackgroundColor();
|
|
127
|
+
// Simple luminance check - in a real app, this would use a proper algorithm
|
|
128
|
+
return bgColor === '#ffffff' || bgColor === '#f5f5f580' || bgColor.includes('#f') ? '#000000' : '#FFFFFF';
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
const handlePress = async () => {
|
|
132
|
+
if (!enabled || isLoading) return;
|
|
133
|
+
|
|
134
|
+
setIsLoading(true);
|
|
135
|
+
|
|
56
136
|
try {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
137
|
+
if (preCheck) {
|
|
138
|
+
const shouldProceed = await preCheck();
|
|
139
|
+
if (!shouldProceed) {
|
|
140
|
+
onRejection?.('Precheck validation failed');
|
|
141
|
+
setIsLoading(false);
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// Check if credentials exist
|
|
147
|
+
const hasStoredCreds = await hasCredentials();
|
|
60
148
|
|
|
61
|
-
if (
|
|
62
|
-
//
|
|
149
|
+
if (hasStoredCreds) {
|
|
150
|
+
// If credentials exist, fetch them and verify
|
|
63
151
|
const credentials = await getCredentials();
|
|
64
|
-
|
|
65
|
-
|
|
152
|
+
|
|
153
|
+
if (!credentials || !credentials.username) {
|
|
154
|
+
// Invalid credentials, clear and start fresh
|
|
155
|
+
await deleteCredentials();
|
|
156
|
+
setShowOnboarding(true);
|
|
157
|
+
setIsLoading(false);
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
try {
|
|
162
|
+
// Validate credentials with server
|
|
163
|
+
const isValid = await onairosApi.validateCredentials(credentials.username);
|
|
164
|
+
|
|
165
|
+
if (!isValid) {
|
|
166
|
+
// Clear invalid credentials
|
|
167
|
+
await deleteCredentials();
|
|
168
|
+
setShowOnboarding(true);
|
|
169
|
+
setIsLoading(false);
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// Store and display overlay with valid credentials
|
|
174
|
+
setStoredCredentials(credentials);
|
|
175
|
+
setShowOverlay(true);
|
|
176
|
+
} catch (validationError) {
|
|
177
|
+
console.warn('Validation error, proceeding to onboarding:', validationError);
|
|
178
|
+
setShowOnboarding(true);
|
|
66
179
|
}
|
|
180
|
+
} else {
|
|
181
|
+
// If no credentials, show onboarding
|
|
182
|
+
setShowOnboarding(true);
|
|
67
183
|
}
|
|
68
184
|
} catch (error) {
|
|
69
|
-
console.error('Error
|
|
185
|
+
console.error('Error during button press flow:', error);
|
|
186
|
+
// Fall back to onboarding on error
|
|
187
|
+
setShowOnboarding(true);
|
|
188
|
+
onRejection?.(error instanceof Error ? error.message : 'Unknown error');
|
|
70
189
|
} finally {
|
|
71
|
-
|
|
190
|
+
setIsLoading(false);
|
|
72
191
|
}
|
|
73
|
-
}
|
|
192
|
+
};
|
|
74
193
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
}, [initialize]);
|
|
78
|
-
|
|
79
|
-
const handleResolved = useCallback((apiUrl: string, token: string, userData: any) => {
|
|
194
|
+
const handleOnboardingComplete = useCallback((apiUrl: string, token: string, data: any) => {
|
|
195
|
+
setShowOnboarding(false);
|
|
80
196
|
if (onResolved) {
|
|
81
|
-
onResolved(apiUrl, token,
|
|
197
|
+
onResolved(apiUrl, token, data);
|
|
82
198
|
}
|
|
83
199
|
}, [onResolved]);
|
|
84
|
-
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
200
|
+
|
|
201
|
+
const handleOverlayResolved = useCallback((apiUrl: string, token: string, data: any) => {
|
|
202
|
+
setShowOverlay(false);
|
|
203
|
+
if (onResolved) {
|
|
204
|
+
onResolved(apiUrl, token, data);
|
|
88
205
|
}
|
|
89
|
-
}, [
|
|
206
|
+
}, [onResolved]);
|
|
90
207
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
208
|
+
// Apply custom styling based on props
|
|
209
|
+
const buttonStyle: ViewStyle[] = [
|
|
210
|
+
styles.button,
|
|
211
|
+
{
|
|
212
|
+
width: buttonWidth,
|
|
213
|
+
height: buttonHeight || 48,
|
|
214
|
+
backgroundColor: getBackgroundColor(),
|
|
215
|
+
borderWidth: hasStroke ? 1 : 0,
|
|
216
|
+
borderColor: darkMode ? '#555555' : '#000000',
|
|
217
|
+
borderRadius: buttonType === 'pill' ? 24 : 8,
|
|
218
|
+
},
|
|
219
|
+
];
|
|
220
|
+
|
|
221
|
+
const textStyle: TextStyle = {
|
|
222
|
+
...styles.buttonText,
|
|
223
|
+
color: getTextColor(),
|
|
224
|
+
opacity: enabled ? 1 : 0.7,
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
const logoColor = getTextColor();
|
|
95
228
|
|
|
96
229
|
return (
|
|
97
|
-
|
|
98
|
-
<
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
230
|
+
<>
|
|
231
|
+
<TouchableOpacity
|
|
232
|
+
style={buttonStyle}
|
|
233
|
+
onPress={handlePress}
|
|
234
|
+
disabled={!enabled || isLoading}
|
|
235
|
+
accessibilityLabel="Sign in with Onairos"
|
|
236
|
+
onPressIn={() => setIsPressed(true)}
|
|
237
|
+
onPressOut={() => setIsPressed(false)}
|
|
238
|
+
>
|
|
239
|
+
<View style={styles.buttonContent}>
|
|
240
|
+
<SvgXml
|
|
241
|
+
xml={onairosLogoSvg.replace('currentColor', logoColor)}
|
|
242
|
+
width={24}
|
|
243
|
+
height={24}
|
|
244
|
+
style={styles.logo}
|
|
245
|
+
/>
|
|
246
|
+
<Text style={textStyle}>{getButtonText()}</Text>
|
|
247
|
+
</View>
|
|
248
|
+
</TouchableOpacity>
|
|
249
|
+
|
|
250
|
+
{/* Overlay and Onboarding components rendered outside the button */}
|
|
251
|
+
{showOnboarding && (
|
|
252
|
+
<UniversalOnboarding
|
|
253
|
+
visible={showOnboarding}
|
|
254
|
+
onClose={() => {
|
|
255
|
+
setShowOnboarding(false);
|
|
256
|
+
onRejection?.('User closed onboarding');
|
|
257
|
+
}}
|
|
258
|
+
AppName={AppName}
|
|
259
|
+
requestData={requestData as any}
|
|
260
|
+
returnLink={returnLink || ''}
|
|
261
|
+
onComplete={handleOnboardingComplete}
|
|
262
|
+
debug={debug}
|
|
263
|
+
test={testMode}
|
|
264
|
+
preferredPlatform={preferredPlatform}
|
|
265
|
+
/>
|
|
266
|
+
)}
|
|
267
|
+
|
|
268
|
+
{/* Overlay rendered through Portal to ensure it appears at root level */}
|
|
269
|
+
{showOverlay && storedCredentials && (
|
|
270
|
+
<Portal>
|
|
271
|
+
<Overlay
|
|
272
|
+
data={requestData || {}}
|
|
273
|
+
username={storedCredentials.username}
|
|
274
|
+
modelKey={storedCredentials.userPin || ''}
|
|
275
|
+
onResolved={handleOverlayResolved}
|
|
276
|
+
appName={AppName}
|
|
277
|
+
darkMode={darkMode}
|
|
278
|
+
/>
|
|
279
|
+
</Portal>
|
|
280
|
+
)}
|
|
281
|
+
</>
|
|
116
282
|
);
|
|
117
|
-
};
|
|
283
|
+
});
|
|
284
|
+
|
|
285
|
+
const styles = StyleSheet.create({
|
|
286
|
+
button: {
|
|
287
|
+
flexDirection: 'row',
|
|
288
|
+
alignItems: 'center',
|
|
289
|
+
justifyContent: 'center',
|
|
290
|
+
paddingVertical: 12,
|
|
291
|
+
paddingHorizontal: 16,
|
|
292
|
+
shadowColor: '#000',
|
|
293
|
+
shadowOffset: { width: 0, height: 2 },
|
|
294
|
+
shadowOpacity: 0.1,
|
|
295
|
+
shadowRadius: 4,
|
|
296
|
+
elevation: 2,
|
|
297
|
+
},
|
|
298
|
+
buttonContent: {
|
|
299
|
+
flexDirection: 'row',
|
|
300
|
+
alignItems: 'center',
|
|
301
|
+
justifyContent: 'center',
|
|
302
|
+
},
|
|
303
|
+
logo: {
|
|
304
|
+
marginRight: 8,
|
|
305
|
+
},
|
|
306
|
+
buttonText: {
|
|
307
|
+
fontSize: 16,
|
|
308
|
+
fontWeight: '600',
|
|
309
|
+
textAlign: 'center',
|
|
310
|
+
},
|
|
311
|
+
});
|