@rownd/react-native 0.1.3 → 0.1.6

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 (56) hide show
  1. package/lib/commonjs/components/SignIn.js +5 -5
  2. package/lib/commonjs/components/SignIn.js.map +1 -1
  3. package/lib/commonjs/components/images/CheckmarkFilled.js +40 -0
  4. package/lib/commonjs/components/images/CheckmarkFilled.js.map +1 -0
  5. package/lib/commonjs/components/images/EmailVerifyWaiting.js +100 -0
  6. package/lib/commonjs/components/images/EmailVerifyWaiting.js.map +1 -0
  7. package/lib/commonjs/components/images/PhoneVerifyWaiting.js +91 -0
  8. package/lib/commonjs/components/images/PhoneVerifyWaiting.js.map +1 -0
  9. package/lib/commonjs/hooks/api.js +3 -5
  10. package/lib/commonjs/hooks/api.js.map +1 -1
  11. package/lib/module/components/SignIn.js +3 -3
  12. package/lib/module/components/SignIn.js.map +1 -1
  13. package/lib/module/components/images/CheckmarkFilled.js +27 -0
  14. package/lib/module/components/images/CheckmarkFilled.js.map +1 -0
  15. package/lib/module/components/images/EmailVerifyWaiting.js +87 -0
  16. package/lib/module/components/images/EmailVerifyWaiting.js.map +1 -0
  17. package/lib/module/components/images/PhoneVerifyWaiting.js +78 -0
  18. package/lib/module/components/images/PhoneVerifyWaiting.js.map +1 -0
  19. package/lib/module/hooks/api.js +1 -4
  20. package/lib/module/hooks/api.js.map +1 -1
  21. package/lib/package.json +178 -0
  22. package/lib/typescript/{components → src/components}/AuthenticatedComponent.d.ts +0 -0
  23. package/lib/typescript/{components → src/components}/AutoSigninDialog.d.ts +0 -0
  24. package/lib/typescript/{components → src/components}/DefaultContext.d.ts +0 -0
  25. package/lib/typescript/{components → src/components}/GlobalContext.d.ts +0 -0
  26. package/lib/typescript/{components → src/components}/RowndComponents.d.ts +0 -0
  27. package/lib/typescript/{components → src/components}/RowndProvider.d.ts +0 -0
  28. package/lib/typescript/{components → src/components}/SignIn.d.ts +0 -0
  29. package/lib/typescript/src/components/images/CheckmarkFilled.d.ts +4 -0
  30. package/lib/typescript/src/components/images/EmailVerifyWaiting.d.ts +4 -0
  31. package/lib/typescript/src/components/images/PhoneVerifyWaiting.d.ts +4 -0
  32. package/lib/typescript/{data → src/data}/actions.d.ts +0 -0
  33. package/lib/typescript/{hooks → src/hooks}/api.d.ts +0 -0
  34. package/lib/typescript/{hooks → src/hooks}/debounce.d.ts +0 -0
  35. package/lib/typescript/{hooks → src/hooks}/fingerprint.d.ts +0 -0
  36. package/lib/typescript/{hooks → src/hooks}/index.d.ts +0 -0
  37. package/lib/typescript/{hooks → src/hooks}/interval.d.ts +0 -0
  38. package/lib/typescript/{hooks → src/hooks}/nav.d.ts +0 -0
  39. package/lib/typescript/{hooks → src/hooks}/rownd.d.ts +0 -0
  40. package/lib/typescript/{index.d.ts → src/index.d.ts} +0 -0
  41. package/lib/typescript/{tailwind.config.d.ts → src/tailwind.config.d.ts} +0 -0
  42. package/lib/typescript/{types.d.ts → src/types.d.ts} +0 -0
  43. package/lib/typescript/{utils → src/utils}/config.d.ts +0 -0
  44. package/lib/typescript/{utils → src/utils}/events.d.ts +0 -0
  45. package/lib/typescript/{utils → src/utils}/form.d.ts +0 -0
  46. package/lib/typescript/{utils → src/utils}/queue.d.ts +0 -0
  47. package/lib/typescript/{utils → src/utils}/storage.d.ts +0 -0
  48. package/lib/typescript/{utils → src/utils}/tailwind.d.ts +0 -0
  49. package/lib/typescript/{utils → src/utils}/tokens.d.ts +0 -0
  50. package/lib/typescript/{utils → src/utils}/user-data.d.ts +0 -0
  51. package/package.json +6 -5
  52. package/src/components/SignIn.tsx +3 -3
  53. package/src/components/images/CheckmarkFilled.tsx +30 -0
  54. package/src/components/images/EmailVerifyWaiting.tsx +95 -0
  55. package/src/components/images/PhoneVerifyWaiting.tsx +74 -0
  56. package/src/hooks/api.ts +1 -2
@@ -1 +1 @@
1
- {"version":3,"names":["Linking","React","useCallback","useEffect","useMemo","useReducer","useRef","useState","differenceInMinutes","View","Text","StyleSheet","Pressable","Image","ActivityIndicator","SvgCssUri","tw","phone","jwt_decode","BottomSheetBackdrop","BottomSheetModal","BottomSheetTextInput","useApi","useInterval","useNav","useDeviceFingerprint","useGlobalContext","ActionType","renderField","ImageEmailVerifyWaiting","ImagePhoneVerifyWaiting","ImageCheckmarkFilled","LoginStep","LoginVerificationStatus","SignIn","navTo","getFingerprint","getChallengeIfPresent","clearFingerprint","state","dispatch","config","nav","app","user","decodedAccessToken","auth","access_token","userIdentifier","setUserIdentifier","fieldError","setFieldError","step","setStep","SUCCESS","INIT","error","setError","allowedIdentifiers","requestId","setRequestId","loginPollStart","setLoginPollStart","isSubmitting","setIsSubmitting","loginType","setLoginType","_phoneDetails","setPhoneDetails","isValidUserIdentifier","setIsValidUserIdentifier","requiresAdditionalFields","setRequiresAdditionalFields","options","init_data","bottomSheetModalRef","current","present","addlFieldInit","currentState","addlFields","hub","additional_fields","addlInputs","default_values","newState","length","field","name","value","fieldReducer","action","console","log","type","payload","addlFieldValues","addlFieldDispatch","client","api","validateEmail","email","re","isValid","test","String","toLowerCase","isValidPhone","phoneResult","phoneNumber","isValidEmail","emailAtIdx","indexOf","emailSuffixIdx","substring","validateInput","validations","includes","push","some","fn","pollLoginStatus","resp","post","headers","appKey","json","challenge_id","err","status","Error","code","PENDING","LOGIN_SUCCESS","Date","now","ERROR","FAILURE","WAITING","post_login_redirect","postLoginUrl","openURL","CHANGE_ROUTE","route","is_verified_user","initSignIn","return_url","user_data","Object","values","data","f","undefined","default_user_id_format","user_id","fingerprint","challengeEntry","id","hash","visitorId","challenge","auth_tokens","app_id","response","message","launchRowndWebsite","handleAddlFieldChange","evt","target","handleClose","setTimeout","hide","snapPoints","renderBackdrop","cbProps","styles","bottomSheet","innerContainer","show_app_icon","icon","icon_content_type","appLogo","uri","dialogHeading","inputLabel","identifierInput","text","trim","map","pressed","button","buttonDisabled","buttonPressed","buttonSubmitting","buttonText","buttonContent","buttonDisabledText","signInNoticeText","style","link","signInVerificationImage","create","modal","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","borderRadius","borderColor","borderWidth","padding","container","flex","header","alignItems","backgroundColor","paddingVertical","borderTopLeftRadius","borderTopRightRadius","panelHandle","resizeMode","textAlign","marginLeft","marginRight","marginBottom","fontSize","marginTop","display","justifyContent","opacity","color","paddingLeft","buttonTextInner","loadingIndicator","textAlignVertical","margin"],"sources":["SignIn.tsx"],"sourcesContent":["import * as Linking from 'expo-linking';\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from 'react';\nimport { differenceInMinutes } from 'date-fns';\nimport {\n View,\n Text,\n StyleSheet,\n Pressable,\n Image,\n ActivityIndicator,\n} from 'react-native';\nimport { SvgCssUri } from 'react-native-svg';\nimport tw from '../utils/tailwind';\nimport phone, { type PhoneResult } from 'phone';\nimport jwt_decode from 'jwt-decode';\nimport {\n BottomSheetBackdrop,\n BottomSheetBackdropProps,\n BottomSheetModal,\n BottomSheetTextInput,\n} from '@gorhom/bottom-sheet';\n\nimport { useApi, useInterval, useNav, useDeviceFingerprint } from '../hooks';\nimport { useGlobalContext } from './GlobalContext';\nimport { ActionType } from '../data/actions';\nimport { renderField } from '../utils/form';\n\n// Image imports\nimport ImageEmailVerifyWaiting from '../assets/images/email-verify-waiting.svg';\nimport ImagePhoneVerifyWaiting from '../assets/images/phone-verify-waiting.svg';\nimport ImageCheckmarkFilled from '../assets/images/checkmark--filled.svg';\n\nenum LoginStep {\n INIT = 'init',\n WAITING = 'waiting',\n SUCCESS = 'success',\n FAILURE = 'failure',\n ERROR = 'error',\n}\n\ntype LoginInitBody = {\n challenge_id: string;\n message: string;\n auth_tokens?: {\n access_token: string;\n refresh_token: string;\n };\n registration_status: string;\n init_data?: Record<string, any>;\n};\n\ntype LoginSuccessBody = {\n access_token: string;\n refresh_token: string;\n app_user_id: string;\n app_id: string;\n status: string;\n};\n\nenum LoginVerificationStatus {\n PENDING = 'pending',\n EXPIRED = 'expired',\n VERIFIED = 'verified',\n}\n\nexport function SignIn() {\n const navTo = useNav();\n const { getFingerprint, getChallengeIfPresent, clearFingerprint } =\n useDeviceFingerprint();\n const { state, dispatch } = useGlobalContext();\n const { config, nav, app, user } = state;\n\n let decodedAccessToken: any;\n if (state.auth.access_token) {\n decodedAccessToken = jwt_decode(state.auth.access_token);\n }\n\n const [userIdentifier, setUserIdentifier] = useState('');\n const [fieldError, setFieldError] = useState<string | null>(null);\n const [step, setStep] = useState(\n state.auth.access_token &&\n decodedAccessToken?.['https://auth.rownd.io/is_verified_user'] !== false\n ? LoginStep.SUCCESS\n : LoginStep.INIT\n );\n const [error, setError] = useState('');\n const allowedIdentifiers = useMemo(() => ['email', 'phone'], []);\n const [requestId, setRequestId] = useState<string | null>(null);\n const [loginPollStart, setLoginPollStart] = useState<number | null>(null);\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [loginType, setLoginType] = useState<'email' | 'phone' | null>(null);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_phoneDetails, setPhoneDetails] = useState<PhoneResult | null>(null); // TODO: For parity with web, need to use `phoneDetails` to update the input visuals\n const [isValidUserIdentifier, setIsValidUserIdentifier] = useState(false);\n const [requiresAdditionalFields, setRequiresAdditionalFields] = useState(\n nav?.options?.init_data\n );\n\n const bottomSheetModalRef = useRef<BottomSheetModal>(null);\n useEffect(() => {\n if (bottomSheetModalRef.current) {\n bottomSheetModalRef.current.present();\n }\n }, []);\n\n const addlFieldInit = useCallback(\n (currentState: Record<string, string>) => {\n const addlFields = app?.config?.hub?.auth?.additional_fields;\n const addlInputs =\n nav?.options?.init_data || nav?.options?.default_values || {};\n\n const newState: Record<string, string> = {};\n if (addlFields?.length) {\n for (const field of addlFields) {\n if (field?.options) {\n newState[field.name] =\n addlInputs?.[field.name] || field.options[0].value;\n }\n }\n }\n\n return {\n ...currentState,\n ...newState,\n };\n },\n [\n app?.config?.hub?.auth?.additional_fields,\n nav?.options?.default_values,\n nav?.options?.init_data,\n ]\n );\n\n const fieldReducer = useCallback(\n (\n currentState: any,\n action: { type: string; payload?: Record<string, string> }\n ) => {\n console.log('fieldReducer', action);\n switch (action.type) {\n case 'reset':\n return addlFieldInit(currentState);\n\n default:\n return {\n ...currentState,\n ...action.payload,\n };\n }\n },\n [addlFieldInit]\n );\n\n const [addlFieldValues, addlFieldDispatch] = useReducer(\n fieldReducer,\n {},\n addlFieldInit\n );\n\n const { client: api } = useApi();\n\n function validateEmail(email: string): boolean {\n const re =\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n const isValid = re.test(String(email).toLowerCase());\n\n if (!isValid) {\n setFieldError('Invalid email address');\n return false;\n }\n\n setFieldError(null);\n return true;\n }\n\n const isValidPhone = useCallback((): boolean => {\n const phoneResult = phone(userIdentifier);\n if (!phoneResult.isValid) {\n setLoginType(null);\n setPhoneDetails(null);\n return false;\n }\n\n setLoginType('phone');\n setPhoneDetails(phoneResult);\n setUserIdentifier(phoneResult.phoneNumber);\n return true;\n }, [userIdentifier]);\n\n const isValidEmail = useCallback((): boolean => {\n const emailAtIdx = userIdentifier?.indexOf('@');\n const emailSuffixIdx = userIdentifier?.substring(emailAtIdx).indexOf('.');\n if (\n emailAtIdx > 0 &&\n emailSuffixIdx > 0 &&\n userIdentifier?.substring(emailAtIdx + emailSuffixIdx).length >= 3\n ) {\n return validateEmail(userIdentifier);\n }\n\n return false;\n }, [userIdentifier]);\n\n const validateInput = useCallback(() => {\n const validations = [];\n if (allowedIdentifiers.includes('phone')) {\n validations.push(isValidPhone);\n }\n\n if (allowedIdentifiers.includes('email')) {\n validations.push(isValidEmail);\n }\n\n if (!validations.some((fn) => fn())) {\n setIsValidUserIdentifier(false);\n } else {\n setIsValidUserIdentifier(true);\n }\n }, [allowedIdentifiers, isValidEmail, isValidPhone]);\n\n // Fire validation as data changes in field\n useEffect(validateInput, [validateInput]);\n\n const pollLoginStatus = useCallback(async () => {\n try {\n const resp: LoginSuccessBody = await api\n .post(`hub/auth/challenge_status`, {\n headers: {\n 'x-rownd-app-key': config?.appKey,\n },\n json: {\n challenge_id: requestId,\n [loginType === 'phone' ? 'phone' : 'email']: userIdentifier,\n },\n })\n .json();\n\n let err: any;\n switch (resp.status) {\n case 'pending':\n err = new Error('Login challenge is still pending');\n err.code = LoginVerificationStatus.PENDING;\n throw err;\n\n case 'expired':\n err = new Error('Login challenge is still pending');\n err.code = LoginVerificationStatus.PENDING;\n throw err;\n\n case 'verified':\n break;\n\n default:\n err = new Error('Unknown login challenge status');\n throw err;\n }\n\n dispatch({\n type: ActionType.LOGIN_SUCCESS,\n payload: resp,\n });\n\n setStep(LoginStep.SUCCESS);\n } catch (err: any) {\n // logger.log('login poll error', err);\n\n // If network error, try again up to 1 minute, else fail\n if (!err.code && differenceInMinutes(Date.now(), loginPollStart!) > 0) {\n setStep(LoginStep.ERROR);\n setError('Network error. Please try again later.');\n return;\n }\n\n // If request expires, then fail (assume > 6 mins is a failure/expiration)\n if (\n (err.status || err.code) &&\n differenceInMinutes(Date.now(), loginPollStart!) > 6\n ) {\n setStep(LoginStep.ERROR);\n setError('The sign in request expired.');\n return;\n }\n\n if (err.status && err.status >= 400) {\n setStep(LoginStep.FAILURE);\n setError('Sign in unsuccessful.');\n }\n }\n }, [\n api,\n config?.appKey,\n dispatch,\n loginPollStart,\n loginType,\n requestId,\n userIdentifier,\n ]);\n\n // Polling when a login flow is in progress\n useInterval(pollLoginStatus, step === LoginStep.WAITING ? 5000 : null);\n\n // login polling manager\n useEffect(() => {\n if (step === LoginStep.SUCCESS) {\n if (nav?.options?.post_login_redirect || state.config?.postLoginUrl) {\n Linking.openURL(\n nav?.options?.post_login_redirect || state.config?.postLoginUrl\n );\n }\n\n dispatch({\n type: ActionType.CHANGE_ROUTE,\n payload: {\n route: '/',\n },\n });\n\n // Reset modal state if this user is unverified, since we'll need to re-submit at some point\n if (!state.auth.is_verified_user) {\n setStep(LoginStep.INIT);\n }\n }\n }, [\n dispatch,\n nav?.options?.post_login_redirect,\n pollLoginStatus,\n state.auth.is_verified_user,\n state.config?.postLoginUrl,\n step,\n ]);\n\n const initSignIn = useCallback(async () => {\n if (step === LoginStep.WAITING) {\n return;\n }\n\n // Validation\n if (fieldError) {\n return;\n }\n\n const payload = {\n [loginType === 'phone' ? 'phone' : 'email']: userIdentifier,\n return_url:\n nav?.options?.post_login_redirect || state.config?.postLoginUrl,\n user_data: Object.values(user.data).some(\n (f) => f !== null && f !== undefined\n )\n ? user.data\n : {}, // Include user.data if at least one field is defined\n };\n\n // Set the user_id to the application's default user id format if it is defined\n if (app.config?.default_user_id_format) {\n payload.user_id = app.config?.default_user_id_format;\n }\n\n if (requiresAdditionalFields) {\n payload.user_data = {\n ...payload.user_data,\n ...addlFieldValues,\n };\n }\n\n // Submission\n try {\n setIsSubmitting(true);\n\n // Get the browser fingerprint for future sign-ins that don't require re-verification\n const fingerprint = await getFingerprint();\n const challengeEntry = await getChallengeIfPresent(app.id, [\n userIdentifier,\n ]);\n payload.fingerprint = {\n hash: fingerprint.visitorId,\n challenge: challengeEntry?.value,\n };\n\n const resp: LoginInitBody = await api\n .post('hub/auth/init', {\n headers: {\n 'x-rownd-app-key': config?.appKey,\n },\n json: payload,\n })\n .json();\n\n // This will only be true when a user is signing in for the very first time and\n // the app allows unverified users OR the user was successfully fingerprinted.\n if (resp.auth_tokens) {\n dispatch({\n type: ActionType.LOGIN_SUCCESS,\n payload: {\n ...resp.auth_tokens,\n app_id: app.id,\n },\n });\n\n setStep(LoginStep.SUCCESS);\n return;\n } else if (payload?.fingerprint?.challenge) {\n // The fingerprint is probably expired, so delete the challenge for re-registration\n try {\n clearFingerprint(payload.fingerprint.challenge);\n } catch (err) {\n // no-op, but not likely to throw anyway\n }\n }\n\n setRequestId(resp.challenge_id);\n setStep(LoginStep.WAITING);\n setLoginPollStart(Date.now());\n } catch (err: any) {\n // logger.error(err);\n\n if (err.response.status === 400) {\n setStep(LoginStep.INIT);\n setRequiresAdditionalFields(true);\n return;\n }\n\n setStep(LoginStep.ERROR);\n setError(err.message);\n } finally {\n setIsSubmitting(false);\n }\n }, [\n step,\n fieldError,\n loginType,\n userIdentifier,\n nav?.options?.post_login_redirect,\n state.config?.postLoginUrl,\n user.data,\n app.config?.default_user_id_format,\n app.id,\n requiresAdditionalFields,\n addlFieldValues,\n getFingerprint,\n getChallengeIfPresent,\n api,\n config?.appKey,\n dispatch,\n clearFingerprint,\n ]);\n\n const launchRowndWebsite = () => {\n Linking.openURL('https://rownd.io');\n };\n\n const handleAddlFieldChange = (evt: Event) => {\n const target = evt.target as HTMLInputElement;\n const { value, name } = target;\n\n addlFieldDispatch({\n type: 'default',\n payload: {\n [name]: value,\n },\n });\n };\n\n const handleClose = useCallback(() => {\n setTimeout(() => {\n navTo({ hide: true });\n }, 150);\n }, [navTo]);\n\n const snapPoints = useMemo(() => ['25%', '70%'], []);\n\n const renderBackdrop = useCallback(\n (cbProps: BottomSheetBackdropProps) => (\n <BottomSheetBackdrop {...cbProps} pressBehavior=\"close\" />\n ),\n []\n );\n\n return (\n <BottomSheetModal\n snapPoints={snapPoints}\n index={1}\n backdropComponent={renderBackdrop}\n keyboardBehavior=\"fillParent\"\n android_keyboardInputMode=\"adjustResize\"\n enablePanDownToClose={true}\n onDismiss={handleClose}\n style={styles.bottomSheet}\n ref={bottomSheetModalRef}\n >\n <View style={styles.innerContainer}>\n {step === LoginStep.INIT && (\n <>\n {app?.config?.hub?.auth?.show_app_icon &&\n app?.icon &&\n (app.icon_content_type === 'image/svg+xml' ? (\n <SvgCssUri uri={app.icon} style={styles.appLogo} />\n ) : (\n <Image style={styles.appLogo} source={{ uri: app.icon }} />\n ))}\n <Text style={styles.dialogHeading}>Sign in or sign up</Text>\n <Text style={styles.inputLabel}>Email or phone number</Text>\n <BottomSheetTextInput\n style={styles.identifierInput}\n placeholder=\"Enter here\"\n keyboardType=\"email-address\"\n textContentType=\"emailAddress\"\n returnKeyLabel=\"Sign in\"\n returnKeyType=\"go\"\n enablesReturnKeyAutomatically={true}\n autoCapitalize=\"none\"\n onChangeText={(text) => setUserIdentifier(text.trim())}\n onBlur={validateInput}\n value={userIdentifier}\n onSubmitEditing={initSignIn}\n />\n {requiresAdditionalFields &&\n app?.config?.hub?.auth?.additional_fields.map((field) => {\n return renderField({\n ...field,\n value: addlFieldValues[field.name] || '',\n [['input', 'text', 'tel', 'email'].includes(field.type)\n ? 'onInput'\n : 'onChange']: handleAddlFieldChange,\n });\n })}\n <Pressable\n style={({ pressed }: { pressed: boolean }) => [\n styles.button,\n !isValidUserIdentifier && styles.buttonDisabled,\n pressed && styles.buttonPressed,\n isSubmitting && styles.buttonSubmitting,\n ]}\n disabled={!isValidUserIdentifier || isSubmitting}\n onPress={initSignIn}\n >\n <Text>\n {isSubmitting && (\n <ActivityIndicator size=\"small\" color=\"#efefef\" />\n )}\n <View style={styles.buttonText}>\n <Text\n style={\n isValidUserIdentifier\n ? styles.buttonContent\n : {\n ...styles.buttonContent,\n ...styles.buttonDisabledText,\n }\n }\n >\n {isSubmitting ? 'Just a sec...' : 'Continue'}\n </Text>\n </View>\n </Text>\n </Pressable>\n <Text style={styles.signInNoticeText}>\n By continuing, you're agreeing to the terms of service that govern\n this app and to receive email or text messages for verification\n purposes.\n </Text>\n </>\n )}\n\n {step === LoginStep.WAITING && (\n <>\n <Text style={styles.dialogHeading}>\n Thanks! Verify your{' '}\n {loginType === 'phone' ? 'phone number' : 'email'} to finish\n </Text>\n <Text style={tw.style('py-6')}>\n Click the link in the message we just sent to{' '}\n <Text style={tw.style('italic')}>{userIdentifier}</Text> to verify\n and finish.\n <Text\n style={[styles.link]}\n onPress={() => setStep(LoginStep.INIT)}\n >\n &nbsp;Re-send message\n </Text>\n </Text>\n\n <View style={styles.signInVerificationImage}>\n {loginType === 'phone' ? (\n <ImagePhoneVerifyWaiting />\n ) : (\n <ImageEmailVerifyWaiting />\n )}\n </View>\n\n <Pressable\n style={({ pressed }: { pressed: boolean }) => [\n styles.button,\n pressed && styles.buttonPressed,\n ]}\n onPress={() => setStep(LoginStep.INIT)}\n >\n <Text style={styles.buttonContent}>\n Try a different{' '}\n {loginType === 'phone' ? 'phone number' : 'email'}\n </Text>\n </Pressable>\n </>\n )}\n\n {step === LoginStep.SUCCESS && (\n <>\n <View style={styles.signInVerificationImage}>\n <ImageCheckmarkFilled />\n </View>\n </>\n )}\n\n {step === LoginStep.FAILURE && (\n <>\n <Text style={tw.style('text-base')}>Whoops, that didn't work!</Text>\n <Pressable\n style={styles.button}\n onPress={() => setStep(LoginStep.INIT)}\n >\n <Text style={styles.buttonContent}>Try again</Text>\n </Pressable>\n </>\n )}\n\n {step === LoginStep.ERROR && (\n <>\n <Text style={tw.style('text-base')}>\n An error occurred while signing you in.\n </Text>\n {!!error && <Text style={tw.style('text-rose-800')}>{error}</Text>}\n <Pressable\n style={styles.button}\n onPress={() => setStep(LoginStep.INIT)}\n >\n <Text style={styles.buttonContent}>Try again</Text>\n </Pressable>\n </>\n )}\n <Text>\n Powered by{' '}\n <Text style={styles.link} onPress={launchRowndWebsite}>\n Rownd\n </Text>\n </Text>\n </View>\n </BottomSheetModal>\n );\n}\n\nconst styles = StyleSheet.create({\n modal: {\n // flex: 1,\n },\n bottomSheet: {\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 12,\n },\n shadowOpacity: 0.58,\n shadowRadius: 16.0,\n\n elevation: 24,\n },\n innerContainer: {\n borderRadius: 20,\n borderColor: 'transparent',\n borderWidth: 0,\n padding: 25,\n },\n container: {\n flex: 1,\n padding: 24,\n },\n header: {\n alignItems: 'center',\n backgroundColor: 'white',\n paddingVertical: 20,\n borderTopLeftRadius: 20,\n borderTopRightRadius: 20,\n },\n panelHandle: {\n width: 40,\n height: 2,\n backgroundColor: 'rgba(0,0,0,0.3)',\n borderRadius: 4,\n },\n appLogo: {\n padding: 50,\n width: 75,\n height: 75,\n resizeMode: 'center',\n textAlign: 'center',\n marginLeft: 'auto',\n marginRight: 'auto',\n marginBottom: 20,\n },\n dialogHeading: {\n fontSize: 24,\n },\n inputLabel: {\n marginTop: 20,\n marginBottom: 5,\n },\n identifierInput: {\n backgroundColor: '#eee',\n borderRadius: 8,\n padding: 10,\n fontSize: 18,\n },\n button: {\n borderRadius: 10,\n padding: 10,\n marginTop: 20,\n marginBottom: 30,\n elevation: 0,\n backgroundColor: '#5b0ae0',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n buttonDisabled: {\n backgroundColor: '#eee',\n },\n buttonPressed: {\n opacity: 0.5,\n },\n buttonContent: {\n textAlign: 'center',\n fontSize: 18,\n color: '#fff',\n },\n buttonText: {\n marginLeft: 10,\n paddingLeft: 10,\n fontSize: 18,\n },\n buttonTextInner: {\n fontSize: 18,\n },\n buttonDisabledText: {\n color: '#8e8e8e',\n },\n buttonSubmitting: {\n backgroundColor: '#2f0492',\n color: '#c7c7c7',\n },\n loadingIndicator: {\n textAlignVertical: 'center',\n padding: 20,\n margin: 20,\n },\n signInNoticeText: {\n fontSize: 12,\n marginBottom: 20,\n },\n signInVerificationImage: {\n alignItems: 'center',\n },\n link: {\n color: '#6114e1',\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"names":["Linking","React","useCallback","useEffect","useMemo","useReducer","useRef","useState","differenceInMinutes","View","Text","StyleSheet","Pressable","Image","ActivityIndicator","SvgCssUri","tw","phone","jwt_decode","BottomSheetBackdrop","BottomSheetModal","BottomSheetTextInput","useApi","useInterval","useNav","useDeviceFingerprint","useGlobalContext","ActionType","renderField","ImageEmailVerifyWaiting","ImagePhoneVerifyWaiting","ImageCheckmarkFilled","LoginStep","LoginVerificationStatus","SignIn","navTo","getFingerprint","getChallengeIfPresent","clearFingerprint","state","dispatch","config","nav","app","user","decodedAccessToken","auth","access_token","userIdentifier","setUserIdentifier","fieldError","setFieldError","step","setStep","SUCCESS","INIT","error","setError","allowedIdentifiers","requestId","setRequestId","loginPollStart","setLoginPollStart","isSubmitting","setIsSubmitting","loginType","setLoginType","_phoneDetails","setPhoneDetails","isValidUserIdentifier","setIsValidUserIdentifier","requiresAdditionalFields","setRequiresAdditionalFields","options","init_data","bottomSheetModalRef","current","present","addlFieldInit","currentState","addlFields","hub","additional_fields","addlInputs","default_values","newState","length","field","name","value","fieldReducer","action","console","log","type","payload","addlFieldValues","addlFieldDispatch","client","api","validateEmail","email","re","isValid","test","String","toLowerCase","isValidPhone","phoneResult","phoneNumber","isValidEmail","emailAtIdx","indexOf","emailSuffixIdx","substring","validateInput","validations","includes","push","some","fn","pollLoginStatus","resp","post","headers","appKey","json","challenge_id","err","status","Error","code","PENDING","LOGIN_SUCCESS","Date","now","ERROR","FAILURE","WAITING","post_login_redirect","postLoginUrl","openURL","CHANGE_ROUTE","route","is_verified_user","initSignIn","return_url","user_data","Object","values","data","f","undefined","default_user_id_format","user_id","fingerprint","challengeEntry","id","hash","visitorId","challenge","auth_tokens","app_id","response","message","launchRowndWebsite","handleAddlFieldChange","evt","target","handleClose","setTimeout","hide","snapPoints","renderBackdrop","cbProps","styles","bottomSheet","innerContainer","show_app_icon","icon","icon_content_type","appLogo","uri","dialogHeading","inputLabel","identifierInput","text","trim","map","pressed","button","buttonDisabled","buttonPressed","buttonSubmitting","buttonText","buttonContent","buttonDisabledText","signInNoticeText","style","link","signInVerificationImage","create","modal","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","borderRadius","borderColor","borderWidth","padding","container","flex","header","alignItems","backgroundColor","paddingVertical","borderTopLeftRadius","borderTopRightRadius","panelHandle","resizeMode","textAlign","marginLeft","marginRight","marginBottom","fontSize","marginTop","display","justifyContent","opacity","color","paddingLeft","buttonTextInner","loadingIndicator","textAlignVertical","margin"],"sources":["SignIn.tsx"],"sourcesContent":["import * as Linking from 'expo-linking';\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from 'react';\nimport { differenceInMinutes } from 'date-fns';\nimport {\n View,\n Text,\n StyleSheet,\n Pressable,\n Image,\n ActivityIndicator,\n} from 'react-native';\nimport { SvgCssUri } from 'react-native-svg';\nimport tw from '../utils/tailwind';\nimport phone, { type PhoneResult } from 'phone';\nimport jwt_decode from 'jwt-decode';\nimport {\n BottomSheetBackdrop,\n BottomSheetBackdropProps,\n BottomSheetModal,\n BottomSheetTextInput,\n} from '@gorhom/bottom-sheet';\n\nimport { useApi, useInterval, useNav, useDeviceFingerprint } from '../hooks';\nimport { useGlobalContext } from './GlobalContext';\nimport { ActionType } from '../data/actions';\nimport { renderField } from '../utils/form';\n\n// Image imports\nimport ImageEmailVerifyWaiting from './images/EmailVerifyWaiting';\nimport ImagePhoneVerifyWaiting from './images/PhoneVerifyWaiting';\nimport ImageCheckmarkFilled from './images/CheckmarkFilled';\n\nenum LoginStep {\n INIT = 'init',\n WAITING = 'waiting',\n SUCCESS = 'success',\n FAILURE = 'failure',\n ERROR = 'error',\n}\n\ntype LoginInitBody = {\n challenge_id: string;\n message: string;\n auth_tokens?: {\n access_token: string;\n refresh_token: string;\n };\n registration_status: string;\n init_data?: Record<string, any>;\n};\n\ntype LoginSuccessBody = {\n access_token: string;\n refresh_token: string;\n app_user_id: string;\n app_id: string;\n status: string;\n};\n\nenum LoginVerificationStatus {\n PENDING = 'pending',\n EXPIRED = 'expired',\n VERIFIED = 'verified',\n}\n\nexport function SignIn() {\n const navTo = useNav();\n const { getFingerprint, getChallengeIfPresent, clearFingerprint } =\n useDeviceFingerprint();\n const { state, dispatch } = useGlobalContext();\n const { config, nav, app, user } = state;\n\n let decodedAccessToken: any;\n if (state.auth.access_token) {\n decodedAccessToken = jwt_decode(state.auth.access_token);\n }\n\n const [userIdentifier, setUserIdentifier] = useState('');\n const [fieldError, setFieldError] = useState<string | null>(null);\n const [step, setStep] = useState(\n state.auth.access_token &&\n decodedAccessToken?.['https://auth.rownd.io/is_verified_user'] !== false\n ? LoginStep.SUCCESS\n : LoginStep.INIT\n );\n const [error, setError] = useState('');\n const allowedIdentifiers = useMemo(() => ['email', 'phone'], []);\n const [requestId, setRequestId] = useState<string | null>(null);\n const [loginPollStart, setLoginPollStart] = useState<number | null>(null);\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [loginType, setLoginType] = useState<'email' | 'phone' | null>(null);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_phoneDetails, setPhoneDetails] = useState<PhoneResult | null>(null); // TODO: For parity with web, need to use `phoneDetails` to update the input visuals\n const [isValidUserIdentifier, setIsValidUserIdentifier] = useState(false);\n const [requiresAdditionalFields, setRequiresAdditionalFields] = useState(\n nav?.options?.init_data\n );\n\n const bottomSheetModalRef = useRef<BottomSheetModal>(null);\n useEffect(() => {\n if (bottomSheetModalRef.current) {\n bottomSheetModalRef.current.present();\n }\n }, []);\n\n const addlFieldInit = useCallback(\n (currentState: Record<string, string>) => {\n const addlFields = app?.config?.hub?.auth?.additional_fields;\n const addlInputs =\n nav?.options?.init_data || nav?.options?.default_values || {};\n\n const newState: Record<string, string> = {};\n if (addlFields?.length) {\n for (const field of addlFields) {\n if (field?.options) {\n newState[field.name] =\n addlInputs?.[field.name] || field.options[0].value;\n }\n }\n }\n\n return {\n ...currentState,\n ...newState,\n };\n },\n [\n app?.config?.hub?.auth?.additional_fields,\n nav?.options?.default_values,\n nav?.options?.init_data,\n ]\n );\n\n const fieldReducer = useCallback(\n (\n currentState: any,\n action: { type: string; payload?: Record<string, string> }\n ) => {\n console.log('fieldReducer', action);\n switch (action.type) {\n case 'reset':\n return addlFieldInit(currentState);\n\n default:\n return {\n ...currentState,\n ...action.payload,\n };\n }\n },\n [addlFieldInit]\n );\n\n const [addlFieldValues, addlFieldDispatch] = useReducer(\n fieldReducer,\n {},\n addlFieldInit\n );\n\n const { client: api } = useApi();\n\n function validateEmail(email: string): boolean {\n const re =\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n const isValid = re.test(String(email).toLowerCase());\n\n if (!isValid) {\n setFieldError('Invalid email address');\n return false;\n }\n\n setFieldError(null);\n return true;\n }\n\n const isValidPhone = useCallback((): boolean => {\n const phoneResult = phone(userIdentifier);\n if (!phoneResult.isValid) {\n setLoginType(null);\n setPhoneDetails(null);\n return false;\n }\n\n setLoginType('phone');\n setPhoneDetails(phoneResult);\n setUserIdentifier(phoneResult.phoneNumber);\n return true;\n }, [userIdentifier]);\n\n const isValidEmail = useCallback((): boolean => {\n const emailAtIdx = userIdentifier?.indexOf('@');\n const emailSuffixIdx = userIdentifier?.substring(emailAtIdx).indexOf('.');\n if (\n emailAtIdx > 0 &&\n emailSuffixIdx > 0 &&\n userIdentifier?.substring(emailAtIdx + emailSuffixIdx).length >= 3\n ) {\n return validateEmail(userIdentifier);\n }\n\n return false;\n }, [userIdentifier]);\n\n const validateInput = useCallback(() => {\n const validations = [];\n if (allowedIdentifiers.includes('phone')) {\n validations.push(isValidPhone);\n }\n\n if (allowedIdentifiers.includes('email')) {\n validations.push(isValidEmail);\n }\n\n if (!validations.some((fn) => fn())) {\n setIsValidUserIdentifier(false);\n } else {\n setIsValidUserIdentifier(true);\n }\n }, [allowedIdentifiers, isValidEmail, isValidPhone]);\n\n // Fire validation as data changes in field\n useEffect(validateInput, [validateInput]);\n\n const pollLoginStatus = useCallback(async () => {\n try {\n const resp: LoginSuccessBody = await api\n .post(`hub/auth/challenge_status`, {\n headers: {\n 'x-rownd-app-key': config?.appKey,\n },\n json: {\n challenge_id: requestId,\n [loginType === 'phone' ? 'phone' : 'email']: userIdentifier,\n },\n })\n .json();\n\n let err: any;\n switch (resp.status) {\n case 'pending':\n err = new Error('Login challenge is still pending');\n err.code = LoginVerificationStatus.PENDING;\n throw err;\n\n case 'expired':\n err = new Error('Login challenge is still pending');\n err.code = LoginVerificationStatus.PENDING;\n throw err;\n\n case 'verified':\n break;\n\n default:\n err = new Error('Unknown login challenge status');\n throw err;\n }\n\n dispatch({\n type: ActionType.LOGIN_SUCCESS,\n payload: resp,\n });\n\n setStep(LoginStep.SUCCESS);\n } catch (err: any) {\n // logger.log('login poll error', err);\n\n // If network error, try again up to 1 minute, else fail\n if (!err.code && differenceInMinutes(Date.now(), loginPollStart!) > 0) {\n setStep(LoginStep.ERROR);\n setError('Network error. Please try again later.');\n return;\n }\n\n // If request expires, then fail (assume > 6 mins is a failure/expiration)\n if (\n (err.status || err.code) &&\n differenceInMinutes(Date.now(), loginPollStart!) > 6\n ) {\n setStep(LoginStep.ERROR);\n setError('The sign in request expired.');\n return;\n }\n\n if (err.status && err.status >= 400) {\n setStep(LoginStep.FAILURE);\n setError('Sign in unsuccessful.');\n }\n }\n }, [\n api,\n config?.appKey,\n dispatch,\n loginPollStart,\n loginType,\n requestId,\n userIdentifier,\n ]);\n\n // Polling when a login flow is in progress\n useInterval(pollLoginStatus, step === LoginStep.WAITING ? 5000 : null);\n\n // login polling manager\n useEffect(() => {\n if (step === LoginStep.SUCCESS) {\n if (nav?.options?.post_login_redirect || state.config?.postLoginUrl) {\n Linking.openURL(\n nav?.options?.post_login_redirect || state.config?.postLoginUrl\n );\n }\n\n dispatch({\n type: ActionType.CHANGE_ROUTE,\n payload: {\n route: '/',\n },\n });\n\n // Reset modal state if this user is unverified, since we'll need to re-submit at some point\n if (!state.auth.is_verified_user) {\n setStep(LoginStep.INIT);\n }\n }\n }, [\n dispatch,\n nav?.options?.post_login_redirect,\n pollLoginStatus,\n state.auth.is_verified_user,\n state.config?.postLoginUrl,\n step,\n ]);\n\n const initSignIn = useCallback(async () => {\n if (step === LoginStep.WAITING) {\n return;\n }\n\n // Validation\n if (fieldError) {\n return;\n }\n\n const payload = {\n [loginType === 'phone' ? 'phone' : 'email']: userIdentifier,\n return_url:\n nav?.options?.post_login_redirect || state.config?.postLoginUrl,\n user_data: Object.values(user.data).some(\n (f) => f !== null && f !== undefined\n )\n ? user.data\n : {}, // Include user.data if at least one field is defined\n };\n\n // Set the user_id to the application's default user id format if it is defined\n if (app.config?.default_user_id_format) {\n payload.user_id = app.config?.default_user_id_format;\n }\n\n if (requiresAdditionalFields) {\n payload.user_data = {\n ...payload.user_data,\n ...addlFieldValues,\n };\n }\n\n // Submission\n try {\n setIsSubmitting(true);\n\n // Get the browser fingerprint for future sign-ins that don't require re-verification\n const fingerprint = await getFingerprint();\n const challengeEntry = await getChallengeIfPresent(app.id, [\n userIdentifier,\n ]);\n payload.fingerprint = {\n hash: fingerprint.visitorId,\n challenge: challengeEntry?.value,\n };\n\n const resp: LoginInitBody = await api\n .post('hub/auth/init', {\n headers: {\n 'x-rownd-app-key': config?.appKey,\n },\n json: payload,\n })\n .json();\n\n // This will only be true when a user is signing in for the very first time and\n // the app allows unverified users OR the user was successfully fingerprinted.\n if (resp.auth_tokens) {\n dispatch({\n type: ActionType.LOGIN_SUCCESS,\n payload: {\n ...resp.auth_tokens,\n app_id: app.id,\n },\n });\n\n setStep(LoginStep.SUCCESS);\n return;\n } else if (payload?.fingerprint?.challenge) {\n // The fingerprint is probably expired, so delete the challenge for re-registration\n try {\n clearFingerprint(payload.fingerprint.challenge);\n } catch (err) {\n // no-op, but not likely to throw anyway\n }\n }\n\n setRequestId(resp.challenge_id);\n setStep(LoginStep.WAITING);\n setLoginPollStart(Date.now());\n } catch (err: any) {\n // logger.error(err);\n\n if (err.response.status === 400) {\n setStep(LoginStep.INIT);\n setRequiresAdditionalFields(true);\n return;\n }\n\n setStep(LoginStep.ERROR);\n setError(err.message);\n } finally {\n setIsSubmitting(false);\n }\n }, [\n step,\n fieldError,\n loginType,\n userIdentifier,\n nav?.options?.post_login_redirect,\n state.config?.postLoginUrl,\n user.data,\n app.config?.default_user_id_format,\n app.id,\n requiresAdditionalFields,\n addlFieldValues,\n getFingerprint,\n getChallengeIfPresent,\n api,\n config?.appKey,\n dispatch,\n clearFingerprint,\n ]);\n\n const launchRowndWebsite = () => {\n Linking.openURL('https://rownd.io');\n };\n\n const handleAddlFieldChange = (evt: Event) => {\n const target = evt.target as HTMLInputElement;\n const { value, name } = target;\n\n addlFieldDispatch({\n type: 'default',\n payload: {\n [name]: value,\n },\n });\n };\n\n const handleClose = useCallback(() => {\n setTimeout(() => {\n navTo({ hide: true });\n }, 150);\n }, [navTo]);\n\n const snapPoints = useMemo(() => ['25%', '70%'], []);\n\n const renderBackdrop = useCallback(\n (cbProps: BottomSheetBackdropProps) => (\n <BottomSheetBackdrop {...cbProps} pressBehavior=\"close\" />\n ),\n []\n );\n\n return (\n <BottomSheetModal\n snapPoints={snapPoints}\n index={1}\n backdropComponent={renderBackdrop}\n keyboardBehavior=\"fillParent\"\n android_keyboardInputMode=\"adjustResize\"\n enablePanDownToClose={true}\n onDismiss={handleClose}\n style={styles.bottomSheet}\n ref={bottomSheetModalRef}\n >\n <View style={styles.innerContainer}>\n {step === LoginStep.INIT && (\n <>\n {app?.config?.hub?.auth?.show_app_icon &&\n app?.icon &&\n (app.icon_content_type === 'image/svg+xml' ? (\n <SvgCssUri uri={app.icon} style={styles.appLogo} />\n ) : (\n <Image style={styles.appLogo} source={{ uri: app.icon }} />\n ))}\n <Text style={styles.dialogHeading}>Sign in or sign up</Text>\n <Text style={styles.inputLabel}>Email or phone number</Text>\n <BottomSheetTextInput\n style={styles.identifierInput}\n placeholder=\"Enter here\"\n keyboardType=\"email-address\"\n textContentType=\"emailAddress\"\n returnKeyLabel=\"Sign in\"\n returnKeyType=\"go\"\n enablesReturnKeyAutomatically={true}\n autoCapitalize=\"none\"\n onChangeText={(text) => setUserIdentifier(text.trim())}\n onBlur={validateInput}\n value={userIdentifier}\n onSubmitEditing={initSignIn}\n />\n {requiresAdditionalFields &&\n app?.config?.hub?.auth?.additional_fields.map((field) => {\n return renderField({\n ...field,\n value: addlFieldValues[field.name] || '',\n [['input', 'text', 'tel', 'email'].includes(field.type)\n ? 'onInput'\n : 'onChange']: handleAddlFieldChange,\n });\n })}\n <Pressable\n style={({ pressed }: { pressed: boolean }) => [\n styles.button,\n !isValidUserIdentifier && styles.buttonDisabled,\n pressed && styles.buttonPressed,\n isSubmitting && styles.buttonSubmitting,\n ]}\n disabled={!isValidUserIdentifier || isSubmitting}\n onPress={initSignIn}\n >\n <Text>\n {isSubmitting && (\n <ActivityIndicator size=\"small\" color=\"#efefef\" />\n )}\n <View style={styles.buttonText}>\n <Text\n style={\n isValidUserIdentifier\n ? styles.buttonContent\n : {\n ...styles.buttonContent,\n ...styles.buttonDisabledText,\n }\n }\n >\n {isSubmitting ? 'Just a sec...' : 'Continue'}\n </Text>\n </View>\n </Text>\n </Pressable>\n <Text style={styles.signInNoticeText}>\n By continuing, you're agreeing to the terms of service that govern\n this app and to receive email or text messages for verification\n purposes.\n </Text>\n </>\n )}\n\n {step === LoginStep.WAITING && (\n <>\n <Text style={styles.dialogHeading}>\n Thanks! Verify your{' '}\n {loginType === 'phone' ? 'phone number' : 'email'} to finish\n </Text>\n <Text style={tw.style('py-6')}>\n Click the link in the message we just sent to{' '}\n <Text style={tw.style('italic')}>{userIdentifier}</Text> to verify\n and finish.\n <Text\n style={[styles.link]}\n onPress={() => setStep(LoginStep.INIT)}\n >\n &nbsp;Re-send message\n </Text>\n </Text>\n\n <View style={styles.signInVerificationImage}>\n {loginType === 'phone' ? (\n <ImagePhoneVerifyWaiting />\n ) : (\n <ImageEmailVerifyWaiting />\n )}\n </View>\n\n <Pressable\n style={({ pressed }: { pressed: boolean }) => [\n styles.button,\n pressed && styles.buttonPressed,\n ]}\n onPress={() => setStep(LoginStep.INIT)}\n >\n <Text style={styles.buttonContent}>\n Try a different{' '}\n {loginType === 'phone' ? 'phone number' : 'email'}\n </Text>\n </Pressable>\n </>\n )}\n\n {step === LoginStep.SUCCESS && (\n <>\n <View style={styles.signInVerificationImage}>\n <ImageCheckmarkFilled />\n </View>\n </>\n )}\n\n {step === LoginStep.FAILURE && (\n <>\n <Text style={tw.style('text-base')}>Whoops, that didn't work!</Text>\n <Pressable\n style={styles.button}\n onPress={() => setStep(LoginStep.INIT)}\n >\n <Text style={styles.buttonContent}>Try again</Text>\n </Pressable>\n </>\n )}\n\n {step === LoginStep.ERROR && (\n <>\n <Text style={tw.style('text-base')}>\n An error occurred while signing you in.\n </Text>\n {!!error && <Text style={tw.style('text-rose-800')}>{error}</Text>}\n <Pressable\n style={styles.button}\n onPress={() => setStep(LoginStep.INIT)}\n >\n <Text style={styles.buttonContent}>Try again</Text>\n </Pressable>\n </>\n )}\n <Text>\n Powered by{' '}\n <Text style={styles.link} onPress={launchRowndWebsite}>\n Rownd\n </Text>\n </Text>\n </View>\n </BottomSheetModal>\n );\n}\n\nconst styles = StyleSheet.create({\n modal: {\n // flex: 1,\n },\n bottomSheet: {\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 12,\n },\n shadowOpacity: 0.58,\n shadowRadius: 16.0,\n\n elevation: 24,\n },\n innerContainer: {\n borderRadius: 20,\n borderColor: 'transparent',\n borderWidth: 0,\n padding: 25,\n },\n container: {\n flex: 1,\n padding: 24,\n },\n header: {\n alignItems: 'center',\n backgroundColor: 'white',\n paddingVertical: 20,\n borderTopLeftRadius: 20,\n borderTopRightRadius: 20,\n },\n panelHandle: {\n width: 40,\n height: 2,\n backgroundColor: 'rgba(0,0,0,0.3)',\n borderRadius: 4,\n },\n appLogo: {\n padding: 50,\n width: 75,\n height: 75,\n resizeMode: 'center',\n textAlign: 'center',\n marginLeft: 'auto',\n marginRight: 'auto',\n marginBottom: 20,\n },\n dialogHeading: {\n fontSize: 24,\n },\n inputLabel: {\n marginTop: 20,\n marginBottom: 5,\n },\n identifierInput: {\n backgroundColor: '#eee',\n borderRadius: 8,\n padding: 10,\n fontSize: 18,\n },\n button: {\n borderRadius: 10,\n padding: 10,\n marginTop: 20,\n marginBottom: 30,\n elevation: 0,\n backgroundColor: '#5b0ae0',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n buttonDisabled: {\n backgroundColor: '#eee',\n },\n buttonPressed: {\n opacity: 0.5,\n },\n buttonContent: {\n textAlign: 'center',\n fontSize: 18,\n color: '#fff',\n },\n buttonText: {\n marginLeft: 10,\n paddingLeft: 10,\n fontSize: 18,\n },\n buttonTextInner: {\n fontSize: 18,\n },\n buttonDisabledText: {\n color: '#8e8e8e',\n },\n buttonSubmitting: {\n backgroundColor: '#2f0492',\n color: '#c7c7c7',\n },\n loadingIndicator: {\n textAlignVertical: 'center',\n padding: 20,\n margin: 20,\n },\n signInNoticeText: {\n fontSize: 12,\n marginBottom: 20,\n },\n signInVerificationImage: {\n alignItems: 'center',\n },\n link: {\n color: '#6114e1',\n },\n});\n"],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+
3
+ import * as React from 'react';
4
+ import Svg, { Defs, Path, Polygon, Rect } from 'react-native-svg';
5
+ /* SVGR has dropped some elements not supported by react-native-svg: style */
6
+
7
+ const SvgComponent = props => /*#__PURE__*/React.createElement(Svg, _extends({
8
+ id: "icon" // @ts-ignore
9
+ ,
10
+ xmlns: "http://www.w3.org/2000/svg",
11
+ width: 32,
12
+ height: 32,
13
+ viewBox: "0 0 32 32"
14
+ }, props), /*#__PURE__*/React.createElement(Defs, null), /*#__PURE__*/React.createElement(Path, {
15
+ d: "M16,2A14,14,0,1,0,30,16,14,14,0,0,0,16,2ZM14,21.5908l-5-5L10.5906,15,14,18.4092,21.41,11l1.5957,1.5859Z"
16
+ }), /*#__PURE__*/React.createElement(Polygon, {
17
+ id: "inner-path",
18
+ points: "14 21.591 9 16.591 10.591 15 14 18.409 21.41 11 23.005 12.585 14 21.591"
19
+ }), /*#__PURE__*/React.createElement(Rect, {
20
+ id: "_Transparent_Rectangle_",
21
+ "data-name": "<Transparent Rectangle>",
22
+ width: 32,
23
+ height: 32
24
+ }));
25
+
26
+ export default SvgComponent;
27
+ //# sourceMappingURL=CheckmarkFilled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Svg","Defs","Path","Polygon","Rect","SvgComponent","props"],"sources":["CheckmarkFilled.tsx"],"sourcesContent":["import * as React from 'react';\nimport Svg, { SvgProps, Defs, Path, Polygon, Rect } from 'react-native-svg';\n/* SVGR has dropped some elements not supported by react-native-svg: style */\n\nconst SvgComponent = (props: SvgProps) => (\n <Svg\n id=\"icon\"\n // @ts-ignore\n xmlns=\"http://www.w3.org/2000/svg\"\n width={32}\n height={32}\n viewBox=\"0 0 32 32\"\n {...props}\n >\n <Defs />\n <Path d=\"M16,2A14,14,0,1,0,30,16,14,14,0,0,0,16,2ZM14,21.5908l-5-5L10.5906,15,14,18.4092,21.41,11l1.5957,1.5859Z\" />\n <Polygon\n id=\"inner-path\"\n points=\"14 21.591 9 16.591 10.591 15 14 18.409 21.41 11 23.005 12.585 14 21.591\"\n />\n <Rect\n id=\"_Transparent_Rectangle_\"\n data-name=\"&lt;Transparent Rectangle&gt;\"\n width={32}\n height={32}\n />\n </Svg>\n);\n\nexport default SvgComponent;\n"],"mappings":";;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,OAAOC,GAAP,IAAwBC,IAAxB,EAA8BC,IAA9B,EAAoCC,OAApC,EAA6CC,IAA7C,QAAyD,kBAAzD;AACA;;AAEA,MAAMC,YAAY,GAAIC,KAAD,iBACnB,oBAAC,GAAD;EACE,EAAE,EAAC,MADL,CAEE;EAFF;EAGE,KAAK,EAAC,4BAHR;EAIE,KAAK,EAAE,EAJT;EAKE,MAAM,EAAE,EALV;EAME,OAAO,EAAC;AANV,GAOMA,KAPN,gBASE,oBAAC,IAAD,OATF,eAUE,oBAAC,IAAD;EAAM,CAAC,EAAC;AAAR,EAVF,eAWE,oBAAC,OAAD;EACE,EAAE,EAAC,YADL;EAEE,MAAM,EAAC;AAFT,EAXF,eAeE,oBAAC,IAAD;EACE,EAAE,EAAC,yBADL;EAEE,aAAU,yBAFZ;EAGE,KAAK,EAAE,EAHT;EAIE,MAAM,EAAE;AAJV,EAfF,CADF;;AAyBA,eAAeD,YAAf"}
@@ -0,0 +1,87 @@
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+
3
+ import * as React from 'react';
4
+ import Svg, { Defs, Rect, Path, G, Use } from 'react-native-svg';
5
+ /* SVGR has dropped some elements not supported by react-native-svg: title, filter */
6
+
7
+ const SvgComponent = props => /*#__PURE__*/React.createElement(Svg, _extends({
8
+ width: "79px",
9
+ height: "68px",
10
+ viewBox: "0 0 79 68" // @ts-ignore
11
+ ,
12
+ xmlns: "http://www.w3.org/2000/svg",
13
+ xmlnsXlink: "http://www.w3.org/1999/xlink"
14
+ }, props), /*#__PURE__*/React.createElement(Defs, null, /*#__PURE__*/React.createElement(Rect, {
15
+ id: "path-1",
16
+ x: 9.69736842,
17
+ y: 6.17105263,
18
+ width: 53.7763158,
19
+ height: 45.8421053,
20
+ rx: 8
21
+ }), /*#__PURE__*/React.createElement(Path, {
22
+ d: "M1.49198314,22.8826009 L27.3602885,37.5009111 C33.5004408,40.9707422 41.014234,40.9500831 47.1352131,37.4465401 L72.5558685,22.8961951 C73.0351888,22.6218404 73.6461631,22.7879979 73.9205178,23.2673182 C74.007089,23.4185653 74.0526316,23.5898106 74.0526316,23.7640813 L74.0526316,63 C74.0526316,65.209139 72.2617706,67 70.0526316,67 L4,67 C1.790861,67 2.705415e-16,65.209139 0,63 L0,23.7532056 C8.43762138e-16,23.2009209 0.44771525,22.7532056 1,22.7532056 C1.17240673,22.7532056 1.34188502,22.7977797 1.49198314,22.8826009 Z",
23
+ id: "path-3"
24
+ })), /*#__PURE__*/React.createElement(G, {
25
+ id: "V2-post--feedback",
26
+ stroke: "none",
27
+ strokeWidth: 1,
28
+ fill: "none",
29
+ fillRule: "evenodd"
30
+ }, /*#__PURE__*/React.createElement(G, {
31
+ id: "xlg-1312px-16-column-copy-96",
32
+ transform: "translate(-616.000000, -265.000000)"
33
+ }, /*#__PURE__*/React.createElement(G, {
34
+ id: "Group",
35
+ transform: "translate(618.000000, 265.000000)"
36
+ }, /*#__PURE__*/React.createElement(Path, {
37
+ d: "M1.1333848,21.7417845 L33.0948714,2.49908682 C35.6464021,0.96291506 38.8400625,0.97130271 41.383489,2.52085558 L72.9358668,21.743773 C73.4075139,22.0311185 73.5569199,22.6464036 73.2695744,23.1180507 C73.2235298,23.1936281 73.1676563,23.2627588 73.1034181,23.3236315 L37.2457723,57.3026316 L37.2457723,57.3026316 L0.965647178,23.3284209 C0.562522036,22.9509179 0.54175124,22.3180937 0.919254307,21.9149685 C0.982302388,21.8476412 1.0543624,21.7893607 1.1333848,21.7417845 Z",
38
+ id: "Path-28",
39
+ fill: "#545454"
40
+ }), /*#__PURE__*/React.createElement(G, {
41
+ id: "Rectangle"
42
+ }, /*#__PURE__*/React.createElement(Use, {
43
+ fill: "black",
44
+ fillOpacity: 1 // @ts-ignore
45
+ ,
46
+ filter: "url(#filter-2)",
47
+ xlinkHref: "#path-1"
48
+ }), /*#__PURE__*/React.createElement(Use, {
49
+ fill: "#FFFFFF",
50
+ fillRule: "evenodd",
51
+ xlinkHref: "#path-1"
52
+ })), /*#__PURE__*/React.createElement(Rect, {
53
+ id: "Rectangle",
54
+ fillOpacity: 0.4,
55
+ fill: "#D8D8D8",
56
+ x: 18.5131579,
57
+ y: 19.3947368,
58
+ width: 36.1447368,
59
+ height: 3.52631579
60
+ }), /*#__PURE__*/React.createElement(Rect, {
61
+ id: "Rectangle-Copy",
62
+ fillOpacity: 0.4,
63
+ fill: "#D8D8D8",
64
+ x: 18.5131579,
65
+ y: 27.3289474,
66
+ width: 36.1447368,
67
+ height: 26.4473684
68
+ }), /*#__PURE__*/React.createElement(G, {
69
+ id: "Rectangle"
70
+ }, /*#__PURE__*/React.createElement(Use, {
71
+ fill: "black",
72
+ fillOpacity: 1 // @ts-ignore
73
+ ,
74
+ filter: "url(#filter-4)",
75
+ xlinkHref: "#path-3"
76
+ }), /*#__PURE__*/React.createElement(Use, {
77
+ fill: "#646464",
78
+ fillRule: "evenodd",
79
+ xlinkHref: "#path-3"
80
+ })), /*#__PURE__*/React.createElement(Path, {
81
+ d: "M23.2845382,51.744338 L1.76315789,67 L1.76315789,67 L71.4078947,67 L49.8865144,51.744338 C41.9186006,46.0961966 31.252452,46.0961966 23.2845382,51.744338 Z",
82
+ id: "Path-29",
83
+ fill: "#545454"
84
+ })))));
85
+
86
+ export default SvgComponent;
87
+ //# sourceMappingURL=EmailVerifyWaiting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Svg","Defs","Rect","Path","G","Use","SvgComponent","props"],"sources":["EmailVerifyWaiting.tsx"],"sourcesContent":["import * as React from 'react';\nimport Svg, { SvgProps, Defs, Rect, Path, G, Use } from 'react-native-svg';\n/* SVGR has dropped some elements not supported by react-native-svg: title, filter */\n\nconst SvgComponent = (props: SvgProps) => (\n <Svg\n width=\"79px\"\n height=\"68px\"\n viewBox=\"0 0 79 68\"\n // @ts-ignore\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <Defs>\n <Rect\n id=\"path-1\"\n x={9.69736842}\n y={6.17105263}\n width={53.7763158}\n height={45.8421053}\n rx={8}\n />\n <Path\n d=\"M1.49198314,22.8826009 L27.3602885,37.5009111 C33.5004408,40.9707422 41.014234,40.9500831 47.1352131,37.4465401 L72.5558685,22.8961951 C73.0351888,22.6218404 73.6461631,22.7879979 73.9205178,23.2673182 C74.007089,23.4185653 74.0526316,23.5898106 74.0526316,23.7640813 L74.0526316,63 C74.0526316,65.209139 72.2617706,67 70.0526316,67 L4,67 C1.790861,67 2.705415e-16,65.209139 0,63 L0,23.7532056 C8.43762138e-16,23.2009209 0.44771525,22.7532056 1,22.7532056 C1.17240673,22.7532056 1.34188502,22.7977797 1.49198314,22.8826009 Z\"\n id=\"path-3\"\n />\n </Defs>\n <G\n id=\"V2-post--feedback\"\n stroke=\"none\"\n strokeWidth={1}\n fill=\"none\"\n fillRule=\"evenodd\"\n >\n <G\n id=\"xlg-1312px-16-column-copy-96\"\n transform=\"translate(-616.000000, -265.000000)\"\n >\n <G id=\"Group\" transform=\"translate(618.000000, 265.000000)\">\n <Path\n d=\"M1.1333848,21.7417845 L33.0948714,2.49908682 C35.6464021,0.96291506 38.8400625,0.97130271 41.383489,2.52085558 L72.9358668,21.743773 C73.4075139,22.0311185 73.5569199,22.6464036 73.2695744,23.1180507 C73.2235298,23.1936281 73.1676563,23.2627588 73.1034181,23.3236315 L37.2457723,57.3026316 L37.2457723,57.3026316 L0.965647178,23.3284209 C0.562522036,22.9509179 0.54175124,22.3180937 0.919254307,21.9149685 C0.982302388,21.8476412 1.0543624,21.7893607 1.1333848,21.7417845 Z\"\n id=\"Path-28\"\n fill=\"#545454\"\n />\n <G id=\"Rectangle\">\n <Use\n fill=\"black\"\n fillOpacity={1}\n // @ts-ignore\n filter=\"url(#filter-2)\"\n xlinkHref=\"#path-1\"\n />\n <Use fill=\"#FFFFFF\" fillRule=\"evenodd\" xlinkHref=\"#path-1\" />\n </G>\n <Rect\n id=\"Rectangle\"\n fillOpacity={0.4}\n fill=\"#D8D8D8\"\n x={18.5131579}\n y={19.3947368}\n width={36.1447368}\n height={3.52631579}\n />\n <Rect\n id=\"Rectangle-Copy\"\n fillOpacity={0.4}\n fill=\"#D8D8D8\"\n x={18.5131579}\n y={27.3289474}\n width={36.1447368}\n height={26.4473684}\n />\n <G id=\"Rectangle\">\n <Use\n fill=\"black\"\n fillOpacity={1}\n // @ts-ignore\n filter=\"url(#filter-4)\"\n xlinkHref=\"#path-3\"\n />\n <Use fill=\"#646464\" fillRule=\"evenodd\" xlinkHref=\"#path-3\" />\n </G>\n <Path\n d=\"M23.2845382,51.744338 L1.76315789,67 L1.76315789,67 L71.4078947,67 L49.8865144,51.744338 C41.9186006,46.0961966 31.252452,46.0961966 23.2845382,51.744338 Z\"\n id=\"Path-29\"\n fill=\"#545454\"\n />\n </G>\n </G>\n </G>\n </Svg>\n);\n\nexport default SvgComponent;\n"],"mappings":";;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,OAAOC,GAAP,IAAwBC,IAAxB,EAA8BC,IAA9B,EAAoCC,IAApC,EAA0CC,CAA1C,EAA6CC,GAA7C,QAAwD,kBAAxD;AACA;;AAEA,MAAMC,YAAY,GAAIC,KAAD,iBACnB,oBAAC,GAAD;EACE,KAAK,EAAC,MADR;EAEE,MAAM,EAAC,MAFT;EAGE,OAAO,EAAC,WAHV,CAIE;EAJF;EAKE,KAAK,EAAC,4BALR;EAME,UAAU,EAAC;AANb,GAOMA,KAPN,gBASE,oBAAC,IAAD,qBACE,oBAAC,IAAD;EACE,EAAE,EAAC,QADL;EAEE,CAAC,EAAE,UAFL;EAGE,CAAC,EAAE,UAHL;EAIE,KAAK,EAAE,UAJT;EAKE,MAAM,EAAE,UALV;EAME,EAAE,EAAE;AANN,EADF,eASE,oBAAC,IAAD;EACE,CAAC,EAAC,8gBADJ;EAEE,EAAE,EAAC;AAFL,EATF,CATF,eAuBE,oBAAC,CAAD;EACE,EAAE,EAAC,mBADL;EAEE,MAAM,EAAC,MAFT;EAGE,WAAW,EAAE,CAHf;EAIE,IAAI,EAAC,MAJP;EAKE,QAAQ,EAAC;AALX,gBAOE,oBAAC,CAAD;EACE,EAAE,EAAC,8BADL;EAEE,SAAS,EAAC;AAFZ,gBAIE,oBAAC,CAAD;EAAG,EAAE,EAAC,OAAN;EAAc,SAAS,EAAC;AAAxB,gBACE,oBAAC,IAAD;EACE,CAAC,EAAC,2dADJ;EAEE,EAAE,EAAC,SAFL;EAGE,IAAI,EAAC;AAHP,EADF,eAME,oBAAC,CAAD;EAAG,EAAE,EAAC;AAAN,gBACE,oBAAC,GAAD;EACE,IAAI,EAAC,OADP;EAEE,WAAW,EAAE,CAFf,CAGE;EAHF;EAIE,MAAM,EAAC,gBAJT;EAKE,SAAS,EAAC;AALZ,EADF,eAQE,oBAAC,GAAD;EAAK,IAAI,EAAC,SAAV;EAAoB,QAAQ,EAAC,SAA7B;EAAuC,SAAS,EAAC;AAAjD,EARF,CANF,eAgBE,oBAAC,IAAD;EACE,EAAE,EAAC,WADL;EAEE,WAAW,EAAE,GAFf;EAGE,IAAI,EAAC,SAHP;EAIE,CAAC,EAAE,UAJL;EAKE,CAAC,EAAE,UALL;EAME,KAAK,EAAE,UANT;EAOE,MAAM,EAAE;AAPV,EAhBF,eAyBE,oBAAC,IAAD;EACE,EAAE,EAAC,gBADL;EAEE,WAAW,EAAE,GAFf;EAGE,IAAI,EAAC,SAHP;EAIE,CAAC,EAAE,UAJL;EAKE,CAAC,EAAE,UALL;EAME,KAAK,EAAE,UANT;EAOE,MAAM,EAAE;AAPV,EAzBF,eAkCE,oBAAC,CAAD;EAAG,EAAE,EAAC;AAAN,gBACE,oBAAC,GAAD;EACE,IAAI,EAAC,OADP;EAEE,WAAW,EAAE,CAFf,CAGE;EAHF;EAIE,MAAM,EAAC,gBAJT;EAKE,SAAS,EAAC;AALZ,EADF,eAQE,oBAAC,GAAD;EAAK,IAAI,EAAC,SAAV;EAAoB,QAAQ,EAAC,SAA7B;EAAuC,SAAS,EAAC;AAAjD,EARF,CAlCF,eA4CE,oBAAC,IAAD;EACE,CAAC,EAAC,6JADJ;EAEE,EAAE,EAAC,SAFL;EAGE,IAAI,EAAC;AAHP,EA5CF,CAJF,CAPF,CAvBF,CADF;;AA0FA,eAAeD,YAAf"}
@@ -0,0 +1,78 @@
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+
3
+ import * as React from 'react';
4
+ import Svg, { Defs, Rect, G, Use, Circle } from 'react-native-svg';
5
+ /* SVGR has dropped some elements not supported by react-native-svg: title, filter */
6
+
7
+ const SvgComponent = props => /*#__PURE__*/React.createElement(Svg, _extends({
8
+ width: "62px",
9
+ height: "100px",
10
+ viewBox: "0 0 62 100" // @ts-ignore
11
+ ,
12
+ xmlns: "http://www.w3.org/2000/svg",
13
+ xmlnsXlink: "http://www.w3.org/1999/xlink"
14
+ }, props), /*#__PURE__*/React.createElement(Defs, null, /*#__PURE__*/React.createElement(Rect, {
15
+ id: "path-1",
16
+ x: 0,
17
+ y: 0,
18
+ width: 58,
19
+ height: 96,
20
+ rx: 8
21
+ })), /*#__PURE__*/React.createElement(G, {
22
+ id: "SMS-verify-from-web-stay-on-web-(BR)",
23
+ stroke: "none",
24
+ strokeWidth: 1,
25
+ fill: "none",
26
+ fillRule: "evenodd"
27
+ }, /*#__PURE__*/React.createElement(G, {
28
+ id: "xlg-1312px-16-column-copy-51",
29
+ transform: "translate(-625.000000, -259.000000)"
30
+ }, /*#__PURE__*/React.createElement(G, {
31
+ id: "unverified-phone",
32
+ transform: "translate(627.000000, 261.000000)"
33
+ }, /*#__PURE__*/React.createElement(G, {
34
+ id: "Rectangle"
35
+ }, /*#__PURE__*/React.createElement(Use, {
36
+ fill: "black",
37
+ fillOpacity: 1 // @ts-ignore
38
+ ,
39
+ filter: "url(#filter-2)",
40
+ xlinkHref: "#path-1"
41
+ }), /*#__PURE__*/React.createElement(Use, {
42
+ fill: "#444444",
43
+ fillRule: "evenodd",
44
+ xlinkHref: "#path-1"
45
+ })), /*#__PURE__*/React.createElement(Circle, {
46
+ id: "Oval",
47
+ fill: "#000000",
48
+ cx: 29,
49
+ cy: 89,
50
+ r: 5
51
+ }), /*#__PURE__*/React.createElement(Rect, {
52
+ id: "Rectangle",
53
+ fill: "#FFFFFF",
54
+ x: 5,
55
+ y: 11,
56
+ width: 48,
57
+ height: 71,
58
+ rx: 2
59
+ }), /*#__PURE__*/React.createElement(Rect, {
60
+ id: "Rectangle",
61
+ fillOpacity: 0.4,
62
+ fill: "#D8D8D8",
63
+ x: 10,
64
+ y: 20,
65
+ width: 38,
66
+ height: 5
67
+ }), /*#__PURE__*/React.createElement(Rect, {
68
+ id: "Rectangle-Copy",
69
+ fillOpacity: 0.4,
70
+ fill: "#D8D8D8",
71
+ x: 10,
72
+ y: 31,
73
+ width: 38,
74
+ height: 36
75
+ })))));
76
+
77
+ export default SvgComponent;
78
+ //# sourceMappingURL=PhoneVerifyWaiting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Svg","Defs","Rect","G","Use","Circle","SvgComponent","props"],"sources":["PhoneVerifyWaiting.tsx"],"sourcesContent":["import * as React from 'react';\nimport Svg, { SvgProps, Defs, Rect, G, Use, Circle } from 'react-native-svg';\n/* SVGR has dropped some elements not supported by react-native-svg: title, filter */\n\nconst SvgComponent = (props: SvgProps) => (\n <Svg\n width=\"62px\"\n height=\"100px\"\n viewBox=\"0 0 62 100\"\n // @ts-ignore\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <Defs>\n <Rect id=\"path-1\" x={0} y={0} width={58} height={96} rx={8} />\n </Defs>\n <G\n id=\"SMS-verify-from-web-stay-on-web-(BR)\"\n stroke=\"none\"\n strokeWidth={1}\n fill=\"none\"\n fillRule=\"evenodd\"\n >\n <G\n id=\"xlg-1312px-16-column-copy-51\"\n transform=\"translate(-625.000000, -259.000000)\"\n >\n <G id=\"unverified-phone\" transform=\"translate(627.000000, 261.000000)\">\n <G id=\"Rectangle\">\n <Use\n fill=\"black\"\n fillOpacity={1}\n // @ts-ignore\n filter=\"url(#filter-2)\"\n xlinkHref=\"#path-1\"\n />\n <Use fill=\"#444444\" fillRule=\"evenodd\" xlinkHref=\"#path-1\" />\n </G>\n <Circle id=\"Oval\" fill=\"#000000\" cx={29} cy={89} r={5} />\n <Rect\n id=\"Rectangle\"\n fill=\"#FFFFFF\"\n x={5}\n y={11}\n width={48}\n height={71}\n rx={2}\n />\n <Rect\n id=\"Rectangle\"\n fillOpacity={0.4}\n fill=\"#D8D8D8\"\n x={10}\n y={20}\n width={38}\n height={5}\n />\n <Rect\n id=\"Rectangle-Copy\"\n fillOpacity={0.4}\n fill=\"#D8D8D8\"\n x={10}\n y={31}\n width={38}\n height={36}\n />\n </G>\n </G>\n </G>\n </Svg>\n);\n\nexport default SvgComponent;\n"],"mappings":";;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,OAAOC,GAAP,IAAwBC,IAAxB,EAA8BC,IAA9B,EAAoCC,CAApC,EAAuCC,GAAvC,EAA4CC,MAA5C,QAA0D,kBAA1D;AACA;;AAEA,MAAMC,YAAY,GAAIC,KAAD,iBACnB,oBAAC,GAAD;EACE,KAAK,EAAC,MADR;EAEE,MAAM,EAAC,OAFT;EAGE,OAAO,EAAC,YAHV,CAIE;EAJF;EAKE,KAAK,EAAC,4BALR;EAME,UAAU,EAAC;AANb,GAOMA,KAPN,gBASE,oBAAC,IAAD,qBACE,oBAAC,IAAD;EAAM,EAAE,EAAC,QAAT;EAAkB,CAAC,EAAE,CAArB;EAAwB,CAAC,EAAE,CAA3B;EAA8B,KAAK,EAAE,EAArC;EAAyC,MAAM,EAAE,EAAjD;EAAqD,EAAE,EAAE;AAAzD,EADF,CATF,eAYE,oBAAC,CAAD;EACE,EAAE,EAAC,sCADL;EAEE,MAAM,EAAC,MAFT;EAGE,WAAW,EAAE,CAHf;EAIE,IAAI,EAAC,MAJP;EAKE,QAAQ,EAAC;AALX,gBAOE,oBAAC,CAAD;EACE,EAAE,EAAC,8BADL;EAEE,SAAS,EAAC;AAFZ,gBAIE,oBAAC,CAAD;EAAG,EAAE,EAAC,kBAAN;EAAyB,SAAS,EAAC;AAAnC,gBACE,oBAAC,CAAD;EAAG,EAAE,EAAC;AAAN,gBACE,oBAAC,GAAD;EACE,IAAI,EAAC,OADP;EAEE,WAAW,EAAE,CAFf,CAGE;EAHF;EAIE,MAAM,EAAC,gBAJT;EAKE,SAAS,EAAC;AALZ,EADF,eAQE,oBAAC,GAAD;EAAK,IAAI,EAAC,SAAV;EAAoB,QAAQ,EAAC,SAA7B;EAAuC,SAAS,EAAC;AAAjD,EARF,CADF,eAWE,oBAAC,MAAD;EAAQ,EAAE,EAAC,MAAX;EAAkB,IAAI,EAAC,SAAvB;EAAiC,EAAE,EAAE,EAArC;EAAyC,EAAE,EAAE,EAA7C;EAAiD,CAAC,EAAE;AAApD,EAXF,eAYE,oBAAC,IAAD;EACE,EAAE,EAAC,WADL;EAEE,IAAI,EAAC,SAFP;EAGE,CAAC,EAAE,CAHL;EAIE,CAAC,EAAE,EAJL;EAKE,KAAK,EAAE,EALT;EAME,MAAM,EAAE,EANV;EAOE,EAAE,EAAE;AAPN,EAZF,eAqBE,oBAAC,IAAD;EACE,EAAE,EAAC,WADL;EAEE,WAAW,EAAE,GAFf;EAGE,IAAI,EAAC,SAHP;EAIE,CAAC,EAAE,EAJL;EAKE,CAAC,EAAE,EALL;EAME,KAAK,EAAE,EANT;EAOE,MAAM,EAAE;AAPV,EArBF,eA8BE,oBAAC,IAAD;EACE,EAAE,EAAC,gBADL;EAEE,WAAW,EAAE,GAFf;EAGE,IAAI,EAAC,SAHP;EAIE,CAAC,EAAE,EAJL;EAKE,CAAC,EAAE,EALL;EAME,KAAK,EAAE,EANT;EAOE,MAAM,EAAE;AAPV,EA9BF,CAJF,CAPF,CAZF,CADF;;AAqEA,eAAeD,YAAf"}
@@ -1,14 +1,11 @@
1
1
  import ky from 'ky';
2
2
  import jwt_decode from 'jwt-decode';
3
- import path from 'path';
4
3
  import { useGlobalContext } from '../components/GlobalContext';
5
4
  import AutoQueue from '../utils/queue';
6
5
  import { useRef, useEffect } from 'react';
7
6
  import { Platform } from 'react-native';
8
7
  import { ActionType } from '../data/actions';
9
-
10
- const packageJson = require(path.join(__dirname, '../../package.json'));
11
-
8
+ import packageJson from '../../package.json';
12
9
  const refreshQueue = new AutoQueue();
13
10
  export const DEFAULT_USER_AGENT = `Rownd SDK for React Native/${packageJson.version} (Language: TypeScript/JavaScript; Platform=${Platform.OS};)`;
14
11
  export default function useApi() {
@@ -1 +1 @@
1
- {"version":3,"names":["ky","jwt_decode","path","useGlobalContext","AutoQueue","useRef","useEffect","Platform","ActionType","packageJson","require","join","__dirname","refreshQueue","DEFAULT_USER_AGENT","version","OS","useApi","state","dispatch","authRef","access_token","auth","refresh_token","current","isNewAccessTokenNeeded","request","headers","get","tokenPayload","tokenExpiration","exp","Date","now","_newAccessTokenFromRefreshToken","stateCopy","_cache","resp","post","config","apiUrl","json","type","REFRESH_TOKEN","payload","err","SIGN_OUT","newAccessTokenFromRefreshToken","enqueue","bind","client","extend","prefixUrl","retry","limit","statusCodes","hooks","beforeRequest","tokenResp","set","beforeRetry"],"sources":["api.ts"],"sourcesContent":["import ky from 'ky';\nimport jwt_decode, { JwtPayload } from 'jwt-decode';\nimport path from 'path';\n\nimport { useGlobalContext, GlobalState } from '../components/GlobalContext';\nimport AutoQueue from '../utils/queue';\nimport { useRef, useEffect } from 'react';\nimport { Platform } from 'react-native';\nimport { ActionType } from '../data/actions';\n\nconst packageJson = require(path.join(__dirname, '../../package.json'));\n\ntype RefreshTokenResp = {\n access_token: string;\n refresh_token: string;\n};\n\nconst refreshQueue = new AutoQueue<RefreshTokenResp>();\n\nexport const DEFAULT_USER_AGENT = `Rownd SDK for React Native/${packageJson.version} (Language: TypeScript/JavaScript; Platform=${Platform.OS};)`;\n\nexport default function useApi() {\n const { state, dispatch } = useGlobalContext();\n\n const authRef = useRef({\n access_token: state.auth.access_token,\n refresh_token: state.auth.refresh_token,\n });\n\n useEffect(() => {\n authRef.current = {\n access_token: state.auth.access_token,\n refresh_token: state.auth.refresh_token,\n };\n }, [state.auth.access_token, state.auth.refresh_token]);\n\n function isNewAccessTokenNeeded(request?: Request) {\n // stateCopy = stateCopy || state;\n // Skip requests that don't need authentication\n if (\n (!!request && !request?.headers.get('authorization')) ||\n !authRef.current?.access_token\n ) {\n return false;\n }\n\n const tokenPayload: JwtPayload = jwt_decode(authRef.current?.access_token);\n\n // Shave 5 minutes off the token expiration to account for clock skew\n const tokenExpiration = (tokenPayload.exp! - 5 * 60) * 1000;\n if (tokenExpiration > Date.now()) {\n return false; // shouldn't be expired\n }\n\n return true;\n }\n\n async function _newAccessTokenFromRefreshToken(\n this: AutoQueue<RefreshTokenResp>,\n stateCopy?: GlobalState\n ) {\n stateCopy = stateCopy || state;\n if (this?._cache?.resp) {\n // logger.log('using cached refresh response');\n return this._cache.resp;\n }\n\n try {\n // logger.log('requesting new refresh token');\n const resp: RefreshTokenResp = await ky\n .post(`${stateCopy.config?.apiUrl}/hub/auth/token`, {\n json: {\n refresh_token: stateCopy.auth?.refresh_token,\n },\n })\n .json();\n\n this._cache.resp = resp;\n\n // Update local cache ref immediately to prevent stale auth checks\n authRef.current = {\n access_token: resp.access_token,\n refresh_token: resp.refresh_token,\n };\n\n dispatch({\n type: ActionType.REFRESH_TOKEN,\n payload: resp,\n });\n\n return resp;\n } catch (err) {\n dispatch({\n type: ActionType.SIGN_OUT,\n });\n\n throw err;\n }\n }\n\n async function newAccessTokenFromRefreshToken(\n stateCopy?: GlobalState\n ): Promise<RefreshTokenResp> {\n return await refreshQueue.enqueue(\n _newAccessTokenFromRefreshToken.bind(refreshQueue, stateCopy)\n );\n }\n\n const client = useRef(\n ky.extend({\n prefixUrl: state.config?.apiUrl,\n headers: {\n 'Content-Type': 'application/json',\n 'User-Agent': DEFAULT_USER_AGENT,\n },\n retry: {\n limit: 2,\n statusCodes: [401, 408, 429, 500, 502, 503, 504],\n },\n hooks: {\n beforeRequest: [\n // Auto-refresh tokens\n async (request) => {\n // Skip requests that don't need authentication\n if (!isNewAccessTokenNeeded(request)) {\n return;\n }\n\n const tokenResp: RefreshTokenResp =\n await newAccessTokenFromRefreshToken();\n\n request.headers.set(\n 'Authorization',\n `Bearer ${tokenResp.access_token}`\n );\n },\n ],\n beforeRetry: [\n async ({ request /*, options, error, retryCount*/ }) => {\n // Skip requests that don't need authentication\n if (!isNewAccessTokenNeeded(request)) {\n return;\n }\n\n const tokenResp: RefreshTokenResp =\n await newAccessTokenFromRefreshToken();\n\n request.headers.set(\n 'Authorization',\n `Bearer ${tokenResp.access_token}`\n );\n },\n ],\n },\n })\n ).current;\n\n return {\n client,\n newAccessTokenFromRefreshToken,\n isNewAccessTokenNeeded,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["ky","jwt_decode","useGlobalContext","AutoQueue","useRef","useEffect","Platform","ActionType","packageJson","refreshQueue","DEFAULT_USER_AGENT","version","OS","useApi","state","dispatch","authRef","access_token","auth","refresh_token","current","isNewAccessTokenNeeded","request","headers","get","tokenPayload","tokenExpiration","exp","Date","now","_newAccessTokenFromRefreshToken","stateCopy","_cache","resp","post","config","apiUrl","json","type","REFRESH_TOKEN","payload","err","SIGN_OUT","newAccessTokenFromRefreshToken","enqueue","bind","client","extend","prefixUrl","retry","limit","statusCodes","hooks","beforeRequest","tokenResp","set","beforeRetry"],"sources":["api.ts"],"sourcesContent":["import ky from 'ky';\nimport jwt_decode, { JwtPayload } from 'jwt-decode';\n\nimport { useGlobalContext, GlobalState } from '../components/GlobalContext';\nimport AutoQueue from '../utils/queue';\nimport { useRef, useEffect } from 'react';\nimport { Platform } from 'react-native';\nimport { ActionType } from '../data/actions';\n\nimport packageJson from '../../package.json';\n\ntype RefreshTokenResp = {\n access_token: string;\n refresh_token: string;\n};\n\nconst refreshQueue = new AutoQueue<RefreshTokenResp>();\n\nexport const DEFAULT_USER_AGENT = `Rownd SDK for React Native/${packageJson.version} (Language: TypeScript/JavaScript; Platform=${Platform.OS};)`;\n\nexport default function useApi() {\n const { state, dispatch } = useGlobalContext();\n\n const authRef = useRef({\n access_token: state.auth.access_token,\n refresh_token: state.auth.refresh_token,\n });\n\n useEffect(() => {\n authRef.current = {\n access_token: state.auth.access_token,\n refresh_token: state.auth.refresh_token,\n };\n }, [state.auth.access_token, state.auth.refresh_token]);\n\n function isNewAccessTokenNeeded(request?: Request) {\n // stateCopy = stateCopy || state;\n // Skip requests that don't need authentication\n if (\n (!!request && !request?.headers.get('authorization')) ||\n !authRef.current?.access_token\n ) {\n return false;\n }\n\n const tokenPayload: JwtPayload = jwt_decode(authRef.current?.access_token);\n\n // Shave 5 minutes off the token expiration to account for clock skew\n const tokenExpiration = (tokenPayload.exp! - 5 * 60) * 1000;\n if (tokenExpiration > Date.now()) {\n return false; // shouldn't be expired\n }\n\n return true;\n }\n\n async function _newAccessTokenFromRefreshToken(\n this: AutoQueue<RefreshTokenResp>,\n stateCopy?: GlobalState\n ) {\n stateCopy = stateCopy || state;\n if (this?._cache?.resp) {\n // logger.log('using cached refresh response');\n return this._cache.resp;\n }\n\n try {\n // logger.log('requesting new refresh token');\n const resp: RefreshTokenResp = await ky\n .post(`${stateCopy.config?.apiUrl}/hub/auth/token`, {\n json: {\n refresh_token: stateCopy.auth?.refresh_token,\n },\n })\n .json();\n\n this._cache.resp = resp;\n\n // Update local cache ref immediately to prevent stale auth checks\n authRef.current = {\n access_token: resp.access_token,\n refresh_token: resp.refresh_token,\n };\n\n dispatch({\n type: ActionType.REFRESH_TOKEN,\n payload: resp,\n });\n\n return resp;\n } catch (err) {\n dispatch({\n type: ActionType.SIGN_OUT,\n });\n\n throw err;\n }\n }\n\n async function newAccessTokenFromRefreshToken(\n stateCopy?: GlobalState\n ): Promise<RefreshTokenResp> {\n return await refreshQueue.enqueue(\n _newAccessTokenFromRefreshToken.bind(refreshQueue, stateCopy)\n );\n }\n\n const client = useRef(\n ky.extend({\n prefixUrl: state.config?.apiUrl,\n headers: {\n 'Content-Type': 'application/json',\n 'User-Agent': DEFAULT_USER_AGENT,\n },\n retry: {\n limit: 2,\n statusCodes: [401, 408, 429, 500, 502, 503, 504],\n },\n hooks: {\n beforeRequest: [\n // Auto-refresh tokens\n async (request) => {\n // Skip requests that don't need authentication\n if (!isNewAccessTokenNeeded(request)) {\n return;\n }\n\n const tokenResp: RefreshTokenResp =\n await newAccessTokenFromRefreshToken();\n\n request.headers.set(\n 'Authorization',\n `Bearer ${tokenResp.access_token}`\n );\n },\n ],\n beforeRetry: [\n async ({ request /*, options, error, retryCount*/ }) => {\n // Skip requests that don't need authentication\n if (!isNewAccessTokenNeeded(request)) {\n return;\n }\n\n const tokenResp: RefreshTokenResp =\n await newAccessTokenFromRefreshToken();\n\n request.headers.set(\n 'Authorization',\n `Bearer ${tokenResp.access_token}`\n );\n },\n ],\n },\n })\n ).current;\n\n return {\n client,\n newAccessTokenFromRefreshToken,\n isNewAccessTokenNeeded,\n };\n}\n"],"mappings":"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"}