@ovok/native 1.8.2 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/lib/commonjs/modules/auth/default-translation.js +9 -0
  2. package/lib/commonjs/modules/auth/default-translation.js.map +1 -1
  3. package/lib/commonjs/modules/auth/index.js.map +1 -1
  4. package/lib/commonjs/modules/auth/sign-in/components/form/login-form-provider.js +15 -10
  5. package/lib/commonjs/modules/auth/sign-in/components/form/login-form-provider.js.map +1 -1
  6. package/lib/commonjs/modules/auth/utils/sign-in-error.js +70 -0
  7. package/lib/commonjs/modules/auth/utils/sign-in-error.js.map +1 -0
  8. package/lib/commonjs/modules/bt-management/hooks/use-nearby-device-offer.js +172 -0
  9. package/lib/commonjs/modules/bt-management/hooks/use-nearby-device-offer.js.map +1 -0
  10. package/lib/commonjs/modules/bt-management/hooks/use-paired-devices.js +3 -2
  11. package/lib/commonjs/modules/bt-management/hooks/use-paired-devices.js.map +1 -1
  12. package/lib/commonjs/modules/bt-management/index.js +12 -0
  13. package/lib/commonjs/modules/bt-management/index.js.map +1 -1
  14. package/lib/commonjs/modules/ui/components/nearby-device-prompt.js +150 -0
  15. package/lib/commonjs/modules/ui/components/nearby-device-prompt.js.map +1 -0
  16. package/lib/commonjs/modules/ui/components/pairing-error-message.js +14 -0
  17. package/lib/commonjs/modules/ui/components/pairing-error-message.js.map +1 -0
  18. package/lib/commonjs/modules/ui/components/pairing-flow.js +3 -8
  19. package/lib/commonjs/modules/ui/components/pairing-flow.js.map +1 -1
  20. package/lib/commonjs/modules/ui/components/period-calendar.js +2 -2
  21. package/lib/commonjs/modules/ui/components/period-calendar.js.map +1 -1
  22. package/lib/commonjs/modules/ui/index.js +11 -0
  23. package/lib/commonjs/modules/ui/index.js.map +1 -1
  24. package/lib/module/modules/auth/default-translation.js +9 -0
  25. package/lib/module/modules/auth/default-translation.js.map +1 -1
  26. package/lib/module/modules/auth/index.js.map +1 -1
  27. package/lib/module/modules/auth/sign-in/components/form/login-form-provider.js +15 -10
  28. package/lib/module/modules/auth/sign-in/components/form/login-form-provider.js.map +1 -1
  29. package/lib/module/modules/auth/utils/sign-in-error.js +66 -0
  30. package/lib/module/modules/auth/utils/sign-in-error.js.map +1 -0
  31. package/lib/module/modules/bt-management/hooks/use-nearby-device-offer.js +166 -0
  32. package/lib/module/modules/bt-management/hooks/use-nearby-device-offer.js.map +1 -0
  33. package/lib/module/modules/bt-management/hooks/use-paired-devices.js +2 -1
  34. package/lib/module/modules/bt-management/hooks/use-paired-devices.js.map +1 -1
  35. package/lib/module/modules/bt-management/index.js +1 -0
  36. package/lib/module/modules/bt-management/index.js.map +1 -1
  37. package/lib/module/modules/ui/components/nearby-device-prompt.js +145 -0
  38. package/lib/module/modules/ui/components/nearby-device-prompt.js.map +1 -0
  39. package/lib/module/modules/ui/components/pairing-error-message.js +9 -0
  40. package/lib/module/modules/ui/components/pairing-error-message.js.map +1 -0
  41. package/lib/module/modules/ui/components/pairing-flow.js +3 -8
  42. package/lib/module/modules/ui/components/pairing-flow.js.map +1 -1
  43. package/lib/module/modules/ui/components/period-calendar.js +2 -2
  44. package/lib/module/modules/ui/components/period-calendar.js.map +1 -1
  45. package/lib/module/modules/ui/index.js +1 -0
  46. package/lib/module/modules/ui/index.js.map +1 -1
  47. package/lib/typescript/commonjs/src/modules/auth/default-translation.d.ts +9 -0
  48. package/lib/typescript/commonjs/src/modules/auth/default-translation.d.ts.map +1 -1
  49. package/lib/typescript/commonjs/src/modules/auth/index.d.ts +1 -0
  50. package/lib/typescript/commonjs/src/modules/auth/index.d.ts.map +1 -1
  51. package/lib/typescript/commonjs/src/modules/auth/sign-in/components/form/login-form-provider.d.ts.map +1 -1
  52. package/lib/typescript/commonjs/src/modules/auth/sign-in/types/login-form-props.d.ts +2 -1
  53. package/lib/typescript/commonjs/src/modules/auth/sign-in/types/login-form-props.d.ts.map +1 -1
  54. package/lib/typescript/commonjs/src/modules/auth/utils/sign-in-error.d.ts +16 -0
  55. package/lib/typescript/commonjs/src/modules/auth/utils/sign-in-error.d.ts.map +1 -0
  56. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-nearby-device-offer.d.ts +21 -0
  57. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-nearby-device-offer.d.ts.map +1 -0
  58. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-paired-devices.d.ts +1 -0
  59. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-paired-devices.d.ts.map +1 -1
  60. package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts +1 -0
  61. package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts.map +1 -1
  62. package/lib/typescript/commonjs/src/modules/ui/components/nearby-device-prompt.d.ts +15 -0
  63. package/lib/typescript/commonjs/src/modules/ui/components/nearby-device-prompt.d.ts.map +1 -0
  64. package/lib/typescript/commonjs/src/modules/ui/components/pairing-error-message.d.ts +2 -0
  65. package/lib/typescript/commonjs/src/modules/ui/components/pairing-error-message.d.ts.map +1 -0
  66. package/lib/typescript/commonjs/src/modules/ui/components/pairing-flow.d.ts.map +1 -1
  67. package/lib/typescript/commonjs/src/modules/ui/index.d.ts +1 -0
  68. package/lib/typescript/commonjs/src/modules/ui/index.d.ts.map +1 -1
  69. package/lib/typescript/module/src/modules/auth/default-translation.d.ts +9 -0
  70. package/lib/typescript/module/src/modules/auth/default-translation.d.ts.map +1 -1
  71. package/lib/typescript/module/src/modules/auth/index.d.ts +1 -0
  72. package/lib/typescript/module/src/modules/auth/index.d.ts.map +1 -1
  73. package/lib/typescript/module/src/modules/auth/sign-in/components/form/login-form-provider.d.ts.map +1 -1
  74. package/lib/typescript/module/src/modules/auth/sign-in/types/login-form-props.d.ts +2 -1
  75. package/lib/typescript/module/src/modules/auth/sign-in/types/login-form-props.d.ts.map +1 -1
  76. package/lib/typescript/module/src/modules/auth/utils/sign-in-error.d.ts +16 -0
  77. package/lib/typescript/module/src/modules/auth/utils/sign-in-error.d.ts.map +1 -0
  78. package/lib/typescript/module/src/modules/bt-management/hooks/use-nearby-device-offer.d.ts +21 -0
  79. package/lib/typescript/module/src/modules/bt-management/hooks/use-nearby-device-offer.d.ts.map +1 -0
  80. package/lib/typescript/module/src/modules/bt-management/hooks/use-paired-devices.d.ts +1 -0
  81. package/lib/typescript/module/src/modules/bt-management/hooks/use-paired-devices.d.ts.map +1 -1
  82. package/lib/typescript/module/src/modules/bt-management/index.d.ts +1 -0
  83. package/lib/typescript/module/src/modules/bt-management/index.d.ts.map +1 -1
  84. package/lib/typescript/module/src/modules/ui/components/nearby-device-prompt.d.ts +15 -0
  85. package/lib/typescript/module/src/modules/ui/components/nearby-device-prompt.d.ts.map +1 -0
  86. package/lib/typescript/module/src/modules/ui/components/pairing-error-message.d.ts +2 -0
  87. package/lib/typescript/module/src/modules/ui/components/pairing-error-message.d.ts.map +1 -0
  88. package/lib/typescript/module/src/modules/ui/components/pairing-flow.d.ts.map +1 -1
  89. package/lib/typescript/module/src/modules/ui/index.d.ts +1 -0
  90. package/lib/typescript/module/src/modules/ui/index.d.ts.map +1 -1
  91. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["i18n","defaultTranslation","common","cancel","delete","profile","save","register","button","name","subtitle","surname","title","accountType","email","patient","practitioner","settings","logout","apple","footer","google","mfa","code","verify","password","addResourceBundle","resources","options","englishResources","Object","assign","en","existingTranslation","translation"],"sourceRoot":"../../../../src","sources":["modules/auth/default-translation.ts"],"mappings":";;AAAA,OAAOA,IAAI,MAAM,SAAS;;AAE1B;AACA,OAAO,MAAMC,kBAAkB,GAAG;EAChCC,MAAM,EAAE;IAAEC,MAAM,EAAE,QAAQ;IAAEC,MAAM,EAAE;EAAS,CAAC;EAC9CC,OAAO,EAAE;IAAEC,IAAI,EAAE;EAAO,CAAC;EACzBC,QAAQ,EAAE;IACR,sBAAsB,EAAE,mCAAmC;IAC3DC,MAAM,EAAE,gBAAgB;IACxBC,IAAI,EAAE,YAAY;IAClB,kBAAkB,EAAE,kBAAkB;IACtC,kBAAkB,EAAE,kBAAkB;IACtCC,QAAQ,EAAE,qBAAqB;IAC/BC,OAAO,EAAE,WAAW;IACpBC,KAAK,EAAE;EACT,CAAC;EACD,gBAAgB,EAAE;IAChBC,WAAW,EAAE,cAAc;IAC3BC,KAAK,EAAE,OAAO;IACdC,OAAO,EAAE,SAAS;IAClBC,YAAY,EAAE,cAAc;IAC5B,gBAAgB,EAAE,gBAAgB;IAClCN,QAAQ,EAAE,+BAA+B;IACzCE,KAAK,EAAE;EACT,CAAC;EACDK,QAAQ,EAAE;IACR,gBAAgB,EAAE,gBAAgB;IAClC,6BAA6B,EAC3B,+CAA+C;IACjDC,MAAM,EAAE,UAAU;IAClB,aAAa,EAAE,oBAAoB;IACnC,wBAAwB,EAAE;EAC5B,CAAC;EACD,SAAS,EAAE;IACTC,KAAK,EAAE,qBAAqB;IAC5BX,MAAM,EAAE,SAAS;IACjB,mBAAmB,EAAE,oCAAoC;IACzDM,KAAK,EAAE,OAAO;IACd,iBAAiB,EAAE,kBAAkB;IACrCM,MAAM,EAAE,wCAAwC;IAChDC,MAAM,EAAE,sBAAsB;IAC9BC,GAAG,EAAE;MAAEC,IAAI,EAAE,mBAAmB;MAAEC,MAAM,EAAE;IAAS,CAAC;IACpD,eAAe,EAAE,iBAAiB;IAClCC,QAAQ,EAAE,UAAU;IACpBf,QAAQ,EAAE,qBAAqB;IAC/BE,KAAK,EAAE;EACT;AACF,CAAC;AAED,IAAI,OAAOZ,IAAI,CAAC0B,iBAAiB,KAAK,UAAU,EAAE;EAChD1B,IAAI,CAAC0B,iBAAiB,CAAC,IAAI,EAAE,aAAa,EAAEzB,kBAAkB,EAAE,IAAI,EAAE,KAAK,CAAC;AAC9E,CAAC,MAAM;EACL,MAAM0B,SAAS,GAAG3B,IAAI,CAAC4B,OAAO,CAACD,SAAS,IAAI,CAAC,CAAC;EAE9C,MAAME,gBAAgB,GAAGC,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAEJ,SAAS,CAACK,EAAE,CAGtD;EAED,MAAMC,mBAAmB,GAAGH,MAAM,CAACC,MAAM,CACvC,CAAC,CAAC,EACFF,gBAAgB,CAACK,WACnB,CAA4B;EAE5BlC,IAAI,CAAC4B,OAAO,CAACD,SAAS,GAAGG,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAEJ,SAAS,EAAE;IACpDK,EAAE,EAAEF,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAEF,gBAAgB,EAAE;MACtCK,WAAW,EAAEJ,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAE9B,kBAAkB,EAAEgC,mBAAmB;IACxE,CAAC;EACH,CAAC,CAAC;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["i18n","defaultTranslation","auth","common","cancel","delete","profile","save","register","button","name","subtitle","surname","title","accountType","email","patient","practitioner","settings","logout","apple","footer","google","mfa","code","verify","password","errors","unavailable","network","generic","addResourceBundle","resources","options","englishResources","Object","assign","en","existingTranslation","translation"],"sourceRoot":"../../../../src","sources":["modules/auth/default-translation.ts"],"mappings":";;AAAA,OAAOA,IAAI,MAAM,SAAS;;AAE1B;AACA,OAAO,MAAMC,kBAAkB,GAAG;EAChCC,IAAI,EAAE;IAAE,YAAY,EAAE;EAAsD,CAAC;EAC7EC,MAAM,EAAE;IAAEC,MAAM,EAAE,QAAQ;IAAEC,MAAM,EAAE;EAAS,CAAC;EAC9CC,OAAO,EAAE;IAAEC,IAAI,EAAE;EAAO,CAAC;EACzBC,QAAQ,EAAE;IACR,sBAAsB,EAAE,mCAAmC;IAC3DC,MAAM,EAAE,gBAAgB;IACxBC,IAAI,EAAE,YAAY;IAClB,kBAAkB,EAAE,kBAAkB;IACtC,kBAAkB,EAAE,kBAAkB;IACtCC,QAAQ,EAAE,qBAAqB;IAC/BC,OAAO,EAAE,WAAW;IACpBC,KAAK,EAAE;EACT,CAAC;EACD,gBAAgB,EAAE;IAChBC,WAAW,EAAE,cAAc;IAC3BC,KAAK,EAAE,OAAO;IACdC,OAAO,EAAE,SAAS;IAClBC,YAAY,EAAE,cAAc;IAC5B,gBAAgB,EAAE,gBAAgB;IAClCN,QAAQ,EAAE,+BAA+B;IACzCE,KAAK,EAAE;EACT,CAAC;EACDK,QAAQ,EAAE;IACR,gBAAgB,EAAE,gBAAgB;IAClC,6BAA6B,EAC3B,+CAA+C;IACjDC,MAAM,EAAE,UAAU;IAClB,aAAa,EAAE,oBAAoB;IACnC,wBAAwB,EAAE;EAC5B,CAAC;EACD,SAAS,EAAE;IACTC,KAAK,EAAE,qBAAqB;IAC5BX,MAAM,EAAE,SAAS;IACjB,mBAAmB,EAAE,oCAAoC;IACzDM,KAAK,EAAE,OAAO;IACd,iBAAiB,EAAE,kBAAkB;IACrCM,MAAM,EAAE,wCAAwC;IAChDC,MAAM,EAAE,sBAAsB;IAC9BC,GAAG,EAAE;MAAEC,IAAI,EAAE,mBAAmB;MAAEC,MAAM,EAAE;IAAS,CAAC;IACpD,eAAe,EAAE,iBAAiB;IAClCC,QAAQ,EAAE,UAAU;IACpBC,MAAM,EAAE;MACN,qBAAqB,EAAE,qCAAqC;MAC5DC,WAAW,EAAE,4DAA4D;MACzEC,OAAO,EAAE,yDAAyD;MAClEC,OAAO,EAAE;IACX,CAAC;IACDnB,QAAQ,EAAE,qBAAqB;IAC/BE,KAAK,EAAE;EACT;AACF,CAAC;AAED,IAAI,OAAOb,IAAI,CAAC+B,iBAAiB,KAAK,UAAU,EAAE;EAChD/B,IAAI,CAAC+B,iBAAiB,CAAC,IAAI,EAAE,aAAa,EAAE9B,kBAAkB,EAAE,IAAI,EAAE,KAAK,CAAC;AAC9E,CAAC,MAAM;EACL,MAAM+B,SAAS,GAAGhC,IAAI,CAACiC,OAAO,CAACD,SAAS,IAAI,CAAC,CAAC;EAE9C,MAAME,gBAAgB,GAAGC,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAEJ,SAAS,CAACK,EAAE,CAGtD;EAED,MAAMC,mBAAmB,GAAGH,MAAM,CAACC,MAAM,CACvC,CAAC,CAAC,EACFF,gBAAgB,CAACK,WACnB,CAA4B;EAE5BvC,IAAI,CAACiC,OAAO,CAACD,SAAS,GAAGG,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAEJ,SAAS,EAAE;IACpDK,EAAE,EAAEF,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAEF,gBAAgB,EAAE;MACtCK,WAAW,EAAEJ,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAEnC,kBAAkB,EAAEqC,mBAAmB;IACxE,CAAC;EACH,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["modules/auth/index.tsx"],"mappings":";;AAAA,OAAO,0BAAuB;AAE9B,cAAc,oBAAW;AACzB,cAAc,qBAAY;AAC1B,cAAc,oBAAW;AACzB,cAAc,kCAAyB;AACvC,cAAc,0BAAiB;AAC/B,cAAc,2BAAkB;AAChC,cAAc,oCAAiC;AAC/C,cAAc,4BAAyB;AACvC,cAAc,wBAAqB;AACnC,cAAc,+BAA4B;AAC1C,cAAc,yBAAsB;AACpC,cAAc,+BAA4B;AAC1C,cAAc,uBAAoB;AAClC,cAAc,wBAAqB;AACnC,cAAc,oBAAW","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["modules/auth/index.tsx"],"mappings":";;AAAA,OAAO,0BAAuB;AAE9B,cAAc,oBAAW;AACzB,cAAc,qBAAY;AAC1B,cAAc,oBAAW;AACzB,cAAc,kCAAyB;AACvC,cAAc,0BAAiB;AAC/B,cAAc,2BAAkB;AAChC,cAAc,oCAAiC;AAC/C,cAAc,4BAAyB;AACvC,cAAc,wBAAqB;AACnC,cAAc,+BAA4B;AAC1C,cAAc,yBAAsB;AACpC,cAAc,+BAA4B;AAC1C,cAAc,uBAAoB;AAElC,cAAc,wBAAqB;AACnC,cAAc,oBAAW","ignoreList":[]}
@@ -3,9 +3,9 @@
3
3
  import { useFormik } from "formik";
4
4
  import React from "react";
5
5
  import { useShallowStableValue } from "../../../../helpers/hooks/use-shallow-stable-value.js";
6
- import { safeJsonParse } from "../../../../helpers/utils/safe-json-parse.js";
7
6
  import { useSignIn } from "../../../hooks/use-sign-in.js";
8
7
  import { setRateLimitFormError } from "../../../utils/rate-limit.js";
8
+ import { parseSignInError } from "../../../utils/sign-in-error.js";
9
9
  import { LoginFormContext } from "../../contexts/login-form-context.js";
10
10
  import { createLoginValidationSchema } from "../../utils/create-login-validation-schema.js";
11
11
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -55,18 +55,18 @@ export const LoginFormProvider = ({
55
55
  }
56
56
  onSuccess?.(loginResponse);
57
57
  } catch (error) {
58
- onError?.(error);
59
- if (setRateLimitFormError(error, formikHelpers)) {
58
+ const {
59
+ error: signInError,
60
+ fieldErrors
61
+ } = parseSignInError(error);
62
+ onError?.(signInError);
63
+ if (setRateLimitFormError(signInError, formikHelpers)) {
60
64
  return;
61
65
  }
62
- const typedError = error;
63
- const parsedError = safeJsonParse(typedError?.message);
64
- const generalErrorMessage = typedError?.message || parsedError?.error?.message;
65
- const fieldErrors = parsedError?.error?.errors ?? [];
66
66
  const emailError = fieldErrors.find(error => error.path.includes("email"))?.message;
67
67
  const passwordError = fieldErrors.find(error => error.path.includes("password"))?.message;
68
68
  if (!emailError && !passwordError) {
69
- formikHelpers.setFieldError("submit", generalErrorMessage);
69
+ formikHelpers.setFieldError("submit", signInError.message);
70
70
  }
71
71
  formikHelpers.setFieldError("email", emailError);
72
72
  formikHelpers.setFieldError("password", passwordError);
@@ -85,8 +85,13 @@ export const LoginFormProvider = ({
85
85
  setMfaCode("");
86
86
  onSuccess?.(loginResponse);
87
87
  } catch (error) {
88
- onError?.(error);
89
- setMfaError(error?.message || "sign-in.mfa.invalid");
88
+ const {
89
+ error: signInError
90
+ } = parseSignInError(error, {
91
+ isMfaVerification: true
92
+ });
93
+ onError?.(signInError);
94
+ setMfaError(signInError.message);
90
95
  } finally {
91
96
  formik.setSubmitting(false);
92
97
  }
@@ -1 +1 @@
1
- {"version":3,"names":["useFormik","React","useShallowStableValue","safeJsonParse","useSignIn","setRateLimitFormError","LoginFormContext","createLoginValidationSchema","jsx","_jsx","LoginFormProvider","children","customValidations","loginType","tenantCode","onSubmit","onSuccess","onError","signInAction","type","verifyMfaAction","verifyMfa","mfaStep","setMfaStep","useState","mfaCode","setMfaCode","mfaError","setMfaError","loginValidationSchema","useMemo","formik","initialValues","email","password","submit","validateOnBlur","validationSchema","values","formikHelpers","loginResponse","run","error","typedError","parsedError","message","generalErrorMessage","fieldErrors","errors","emailError","find","path","includes","passwordError","setFieldError","useCallback","trim","isSubmitting","setSubmitting","contextValue","onMfaSuccess","Provider","value"],"sourceRoot":"../../../../../../../src","sources":["modules/auth/sign-in/components/form/login-form-provider.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useFormik","React","useShallowStableValue","useSignIn","setRateLimitFormError","parseSignInError","LoginFormContext","createLoginValidationSchema","jsx","_jsx","LoginFormProvider","children","customValidations","loginType","tenantCode","onSubmit","onSuccess","onError","signInAction","type","verifyMfaAction","verifyMfa","mfaStep","setMfaStep","useState","mfaCode","setMfaCode","mfaError","setMfaError","loginValidationSchema","useMemo","formik","initialValues","email","password","submit","validateOnBlur","validationSchema","values","formikHelpers","loginResponse","run","error","signInError","fieldErrors","emailError","find","path","includes","message","passwordError","setFieldError","useCallback","trim","isSubmitting","setSubmitting","isMfaVerification","contextValue","onMfaSuccess","Provider","value"],"sourceRoot":"../../../../../../../src","sources":["modules/auth/sign-in/components/form/login-form-provider.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ const asRecord = value => typeof value === "object" && value !== null ? value : undefined;
4
+ const parseJsonRecord = value => {
5
+ if (typeof value !== "string") {
6
+ return undefined;
7
+ }
8
+ try {
9
+ return asRecord(JSON.parse(value));
10
+ } catch {
11
+ return undefined;
12
+ }
13
+ };
14
+ const numberValue = (...values) => {
15
+ const value = values.find(candidate => typeof candidate === "number" && Number.isFinite(candidate));
16
+ return typeof value === "number" ? value : undefined;
17
+ };
18
+ const stringValue = (...values) => {
19
+ const value = values.find(candidate => typeof candidate === "string" && candidate.length > 0);
20
+ return typeof value === "string" ? value : undefined;
21
+ };
22
+ const messageKeyForStatus = (status, isMfaVerification) => {
23
+ switch (status) {
24
+ case 400:
25
+ case 401:
26
+ return isMfaVerification ? "sign-in.mfa.invalid" : "sign-in.errors.invalid-credentials";
27
+ case 403:
28
+ case 404:
29
+ return "sign-in.errors.unavailable";
30
+ case 429:
31
+ return "auth.rate-limit";
32
+ default:
33
+ return undefined;
34
+ }
35
+ };
36
+ const isNetworkError = (error, message) => error instanceof TypeError || typeof message === "string" && /network request failed|network error|failed to fetch/i.test(message);
37
+
38
+ /** Converts transport/server failures to safe, translatable sign-in errors. */
39
+ const parseSignInError = (error, options = {}) => {
40
+ const root = asRecord(error);
41
+ const originalMessage = error instanceof Error ? error.message : root?.message;
42
+ const response = asRecord(root?.response);
43
+ const body = parseJsonRecord(originalMessage) ?? asRecord(root?.body) ?? asRecord(root?.data) ?? asRecord(response?.data) ?? asRecord(response?.body) ?? root;
44
+ const nestedError = asRecord(body?.error);
45
+ const status = numberValue(root?.status, root?.statusCode, response?.status, body?.status, body?.statusCode);
46
+ const code = stringValue(body?.code, nestedError?.code, root?.code);
47
+ const requestId = stringValue(body?.requestId, root?.requestId);
48
+ const fieldErrors = Array.isArray(body?.errors) ? body.errors : Array.isArray(nestedError?.errors) ? nestedError.errors : [];
49
+ const message = messageKeyForStatus(status, options.isMfaVerification === true) ?? (isNetworkError(error, originalMessage) ? "sign-in.errors.network" : "sign-in.errors.generic");
50
+ const signInError = new Error(message);
51
+ if (status !== undefined) {
52
+ signInError.status = status;
53
+ }
54
+ if (requestId !== undefined) {
55
+ signInError.requestId = requestId;
56
+ }
57
+ if (code !== undefined) {
58
+ signInError.code = code;
59
+ }
60
+ return {
61
+ error: signInError,
62
+ fieldErrors
63
+ };
64
+ };
65
+ export { parseSignInError };
66
+ //# sourceMappingURL=sign-in-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["asRecord","value","undefined","parseJsonRecord","JSON","parse","numberValue","values","find","candidate","Number","isFinite","stringValue","length","messageKeyForStatus","status","isMfaVerification","isNetworkError","error","message","TypeError","test","parseSignInError","options","root","originalMessage","Error","response","body","data","nestedError","statusCode","code","requestId","fieldErrors","Array","isArray","errors","signInError"],"sourceRoot":"../../../../../src","sources":["modules/auth/utils/sign-in-error.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+
3
+ /* eslint-disable import/group-exports */
4
+
5
+ import * as React from "react";
6
+ import { BluetoothError, BluetoothErrorCode, toBluetoothError } from "../types/bluetooth-error.js";
7
+ import { useBluetoothRuntime, useBluetoothSelector } from "./runtime-context.js";
8
+ import { useNearbyDevices } from "./use-nearby-devices.js";
9
+ import { DEFAULT_PAIRED_DEVICE_STORAGE_KEY, usePairedDevices } from "./use-paired-devices.js";
10
+ const dismissedLaterByRuntime = new WeakMap();
11
+ const getDismissedLater = (runtime, storageKey) => {
12
+ let byStorageKey = dismissedLaterByRuntime.get(runtime);
13
+ if (!byStorageKey) {
14
+ byStorageKey = new Map();
15
+ dismissedLaterByRuntime.set(runtime, byStorageKey);
16
+ }
17
+ let dismissed = byStorageKey.get(storageKey);
18
+ if (!dismissed) {
19
+ dismissed = new Set();
20
+ byStorageKey.set(storageKey, dismissed);
21
+ }
22
+ return dismissed;
23
+ };
24
+ const parseDeviceIds = value => {
25
+ if (!value) {
26
+ return [];
27
+ }
28
+ try {
29
+ const parsed = JSON.parse(value);
30
+ return Array.isArray(parsed) ? [...new Set(parsed.filter(id => typeof id === "string"))] : [];
31
+ } catch {
32
+ return [];
33
+ }
34
+ };
35
+ const notNearbyError = () => new BluetoothError(BluetoothErrorCode.CONNECTION_FAILED, "The device is no longer nearby.");
36
+ export const useNearbyDeviceOffer = ({
37
+ storage,
38
+ storageKey = DEFAULT_PAIRED_DEVICE_STORAGE_KEY,
39
+ declinedStorageKey = `${storageKey}.declined-nearby-devices`,
40
+ enabled = true,
41
+ onPaired,
42
+ onError
43
+ }) => {
44
+ const runtime = useBluetoothRuntime();
45
+ const devices = useBluetoothSelector(snapshot => snapshot.devices);
46
+ const {
47
+ pair
48
+ } = useNearbyDevices();
49
+ const {
50
+ paired,
51
+ pair: remember
52
+ } = usePairedDevices({
53
+ storage,
54
+ storageKey
55
+ });
56
+ const [declinedIds, setDeclinedIds] = React.useState(undefined);
57
+ const [status, setStatus] = React.useState("idle");
58
+ const [error, setError] = React.useState(undefined);
59
+ const [, redraw] = React.useReducer(value => value + 1, 0);
60
+ const busyRef = React.useRef(false);
61
+ const deviceRef = React.useRef(undefined);
62
+ const previousDeviceIdRef = React.useRef(undefined);
63
+ const onErrorRef = React.useRef(onError);
64
+ onErrorRef.current = onError;
65
+ const dismissedLater = React.useMemo(() => getDismissedLater(runtime, storageKey), [runtime, storageKey]);
66
+ const pairedIdsLoaded = runtime.getPairedDeviceIds(storageKey) !== undefined;
67
+ React.useEffect(() => {
68
+ let active = true;
69
+ void Promise.resolve().then(() => storage.getItem(declinedStorageKey)).then(parseDeviceIds).then(ids => {
70
+ if (active) {
71
+ setDeclinedIds(ids);
72
+ }
73
+ }).catch(cause => {
74
+ if (active) {
75
+ const normalized = toBluetoothError(cause);
76
+ setError(normalized);
77
+ setStatus("error");
78
+ onErrorRef.current?.(normalized);
79
+ }
80
+ });
81
+ return () => {
82
+ active = false;
83
+ };
84
+ }, [declinedStorageKey, storage]);
85
+ const device = enabled && pairedIdsLoaded && declinedIds !== undefined ? devices.find(candidate => !paired.includes(candidate.id) && !declinedIds.includes(candidate.id) && !dismissedLater.has(candidate.id)) : undefined;
86
+ deviceRef.current = device;
87
+ const deviceId = device?.id;
88
+ const hasDevice = device !== undefined;
89
+ React.useEffect(() => {
90
+ if (previousDeviceIdRef.current === deviceId) {
91
+ return;
92
+ }
93
+ previousDeviceIdRef.current = deviceId;
94
+ setError(undefined);
95
+ setStatus(hasDevice ? "offered" : "idle");
96
+ }, [deviceId, hasDevice]);
97
+ const accept = React.useCallback(async () => {
98
+ if (busyRef.current) {
99
+ return;
100
+ }
101
+ const selected = deviceRef.current;
102
+ if (!selected) {
103
+ const missing = notNearbyError();
104
+ setError(missing);
105
+ setStatus("error");
106
+ onError?.(missing);
107
+ throw missing;
108
+ }
109
+ busyRef.current = true;
110
+ setError(undefined);
111
+ setStatus("pairing");
112
+ try {
113
+ const connected = await pair(selected.id);
114
+ if (!connected) {
115
+ throw notNearbyError();
116
+ }
117
+ await remember(connected);
118
+ setStatus("paired");
119
+ onPaired?.(connected);
120
+ } catch (cause) {
121
+ const normalized = toBluetoothError(cause);
122
+ setError(normalized);
123
+ setStatus("error");
124
+ onError?.(normalized, selected);
125
+ throw normalized;
126
+ } finally {
127
+ busyRef.current = false;
128
+ }
129
+ }, [onError, onPaired, pair, remember]);
130
+ const decline = React.useCallback(async () => {
131
+ const selected = deviceRef.current;
132
+ if (!selected) {
133
+ return;
134
+ }
135
+ const next = [...new Set([...(declinedIds ?? []), selected.id])];
136
+ try {
137
+ await storage.setItem(declinedStorageKey, JSON.stringify(next));
138
+ setDeclinedIds(next);
139
+ setError(undefined);
140
+ setStatus("idle");
141
+ } catch (cause) {
142
+ const normalized = toBluetoothError(cause);
143
+ onError?.(normalized, selected);
144
+ throw normalized;
145
+ }
146
+ }, [declinedIds, declinedStorageKey, onError, storage]);
147
+ const later = React.useCallback(() => {
148
+ const selected = deviceRef.current;
149
+ if (!selected) {
150
+ return;
151
+ }
152
+ dismissedLater.add(selected.id);
153
+ setError(undefined);
154
+ setStatus("idle");
155
+ redraw();
156
+ }, [dismissedLater]);
157
+ return {
158
+ device,
159
+ status: device && status === "idle" ? "offered" : status,
160
+ error,
161
+ accept,
162
+ decline,
163
+ later
164
+ };
165
+ };
166
+ //# sourceMappingURL=use-nearby-device-offer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","BluetoothError","BluetoothErrorCode","toBluetoothError","useBluetoothRuntime","useBluetoothSelector","useNearbyDevices","DEFAULT_PAIRED_DEVICE_STORAGE_KEY","usePairedDevices","dismissedLaterByRuntime","WeakMap","getDismissedLater","runtime","storageKey","byStorageKey","get","Map","set","dismissed","Set","parseDeviceIds","value","parsed","JSON","parse","Array","isArray","filter","id","notNearbyError","CONNECTION_FAILED","useNearbyDeviceOffer","storage","declinedStorageKey","enabled","onPaired","onError","devices","snapshot","pair","paired","remember","declinedIds","setDeclinedIds","useState","undefined","status","setStatus","error","setError","redraw","useReducer","busyRef","useRef","deviceRef","previousDeviceIdRef","onErrorRef","current","dismissedLater","useMemo","pairedIdsLoaded","getPairedDeviceIds","useEffect","active","Promise","resolve","then","getItem","ids","catch","cause","normalized","device","find","candidate","includes","has","deviceId","hasDevice","accept","useCallback","selected","missing","connected","decline","next","setItem","stringify","later","add"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/hooks/use-nearby-device-offer.ts"],"mappings":"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","ignoreList":[]}
@@ -4,9 +4,10 @@
4
4
 
5
5
  import * as React from "react";
6
6
  import { useBluetoothRuntime } from "./runtime-context.js";
7
+ export const DEFAULT_PAIRED_DEVICE_STORAGE_KEY = "@ovok/native/paired-devices";
7
8
  export const usePairedDevices = ({
8
9
  storage,
9
- storageKey = "@ovok/native/paired-devices",
10
+ storageKey = DEFAULT_PAIRED_DEVICE_STORAGE_KEY,
10
11
  autoPair = false
11
12
  }) => {
12
13
  const runtime = useBluetoothRuntime();
@@ -1 +1 @@
1
- {"version":3,"names":["React","useBluetoothRuntime","usePairedDevices","storage","storageKey","autoPair","runtime","paired","setPaired","useState","getPairedDeviceIds","pairedRef","useRef","autoConnectedRef","WeakSet","storageRef","autoPairRef","current","save","useCallback","next","setPairedDeviceIds","setItem","JSON","stringify","useEffect","subscribe","event","loadPairedDeviceIds","value","getItem","parsed","parse","Array","isArray","filter","id","then","connectIfPaired","device","includes","has","add","connect","catch","delete","devices","forEach","pair","Set","forget","find","candidate","manager","disconnectDevice","disconnect"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/hooks/use-paired-devices.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useBluetoothRuntime","DEFAULT_PAIRED_DEVICE_STORAGE_KEY","usePairedDevices","storage","storageKey","autoPair","runtime","paired","setPaired","useState","getPairedDeviceIds","pairedRef","useRef","autoConnectedRef","WeakSet","storageRef","autoPairRef","current","save","useCallback","next","setPairedDeviceIds","setItem","JSON","stringify","useEffect","subscribe","event","loadPairedDeviceIds","value","getItem","parsed","parse","Array","isArray","filter","id","then","connectIfPaired","device","includes","has","add","connect","catch","delete","devices","forEach","pair","Set","forget","find","candidate","manager","disconnectDevice","disconnect"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/hooks/use-paired-devices.ts"],"mappings":"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","ignoreList":[]}
@@ -100,6 +100,7 @@ export * from "./hooks/use-bluetooth-permission.js";
100
100
  export * from "./hooks/runtime-context.js";
101
101
  export * from "./hooks/use-bluetooth-state.js";
102
102
  export * from "./hooks/use-nearby-devices.js";
103
+ export * from "./hooks/use-nearby-device-offer.js";
103
104
  export * from "./hooks/use-paired-devices.js";
104
105
  export * from "./hooks/use-device-connection.js";
105
106
  export * from "./hooks/use-bt-device.js";
@@ -1 +1 @@
1
- {"version":3,"names":["useHealthImport"],"sourceRoot":"../../../../src","sources":["modules/bt-management/index.ts"],"mappings":";;AAAA,cAAc,gCAA6B;AAC3C,cAAc,4BAAyB;AACvC,cAAc,kCAA+B;AAC7C,cAAc,8BAA2B;AACzC,cAAc,6BAA0B;AACxC,cAAc,6BAA0B;AACxC,cAAc,qCAAkC;AAChD,cAAc,6BAA0B;AACxC,cAAc,+BAA4B;AAC1C,cAAc,kCAA+B;AAC7C,cAAc,8BAA2B;AACzC,cAAc,8BAA2B;AACzC,cAAc,6BAA0B;AACxC,cAAc,+BAA4B;AAC1C,cAAc,gCAA6B;AAC3C,cAAc,gCAA6B;AAC3C,cAAc,8BAA2B;AACzC,cAAc,2BAAwB;AACtC,cAAc,uBAAoB;AAClC,cAAc,0BAAuB;AACrC,cAAc,wBAAqB;AACnC,cAAc,0BAAuB;AACrC,cAAc,+BAA4B;AAC1C,cAAc,6BAA0B;AACxC,cAAc,yBAAsB;AACpC,cAAc,0BAAuB;AACrC,cAAc,6BAA0B;AACxC,cAAc,sCAAmC;AACjD,cAAc,4BAAyB;AACvC,cAAc,4BAAyB;AACvC,cAAc,2BAAwB;AACtC,cAAc,4BAAyB;AACvC,cAAc,0CAAuC;AACrD,cAAc,oCAAiC;AAC/C,cAAc,0BAAuB;AACrC,cAAc,uBAAoB;AAElC,cAAc,yCAAsC;AACpD,cAAc,0DAAuD;AACrE,cAAc,4CAAyC;AACvD,cAAc,0BAAuB;AACrC,cAAc,sDAAmD;AACjE,cAAc,2DAAwD;AACtE,cAAc,kDAA+C;AAC7D,cAAc,wDAAqD;AACnE,cAAc,4BAAyB;AACvC,cAAc,yBAAsB;AACpC,cAAc,oBAAW;AACzB,cAAc,2CAAwC;AACtD,cAAc,2DAAwD;AACtE,cAAc,yCAAsC;AACpD,cAAc,oDAAiD;AAC/D,cAAc,mDAAgD;AAC9D,cAAc,8CAA2C;AACzD,cAAc,0DAAuD;AACrE,cAAc,kDAA+C;AAC7D,cAAc,uDAAoD;AAClE,cAAc,iDAA8C;AAC5D,cAAc,gDAA6C;AAC3D,cAAc,qDAAkD;AAChE,cAAc,0CAAuC;AACrD,cAAc,0DAAuD;AACrE,cAAc,mDAAgD;AAC9D,cAAc,4CAAyC;AACvD,cAAc,4CAAyC;AACvD,cAAc,sCAAmC;AACjD,cAAc,iDAA8C;AAC5D,cAAc,4CAAyC;AACvD,cAAc,oDAAiD;AAC/D,cAAc,+DAA4D;AAC1E,cAAc,0DAAuD;AACrE,cAAc,wCAAqC;AACnD,cAAc,mDAAgD;AAC9D,cAAc,8CAA2C;AACzD,cAAc,8CAA2C;AACzD,cAAc,8CAA2C;AACzD,cAAc,gDAA6C;AAC3D,cAAc,iDAA8C;AAC5D,cAAc,kDAA+C;AAC7D,cAAc,oDAAiD;AAC/D,cAAc,qDAAkD;AAChE,cAAc,iDAA8C;AAC5D,cAAc,+CAA4C;AAC1D,cAAc,mDAAgD;AAC9D,cAAc,+CAA4C;AAC1D,cAAc,2CAAwC;AACtD,cAAc,8CAA2C;AACzD,cAAc,4CAAyC;AACvD,cAAc,0CAAuC;AACrD,cAAc,6CAA0C;AACxD,cAAc,+CAA4C;AAC1D,cAAc,+CAA4C;AAE1D,cAAc,0CAAuC;AAErD,cAAc,6BAA0B;AACxC,cAAc,yCAAsC;AACpD,cAAc,6CAA0C;AACxD,cAAc,oCAAiC;AAC/C,cAAc,qCAAkC;AAChD,cAAc,4BAAyB;AACvC,cAAc,gCAA6B;AAC3C,cAAc,+BAA4B;AAC1C,cAAc,+BAA4B;AAC1C,cAAc,kCAA+B;AAC7C,cAAc,0BAAuB;AACrC,cAAc,6BAA0B;AACxC,cAAc,gCAA6B;;AAE3C;AACA,SACEA,eAAe,QACV,yCAAsC;;AAE7C;;AAIA,cAAc,6BAA0B","ignoreList":[]}
1
+ {"version":3,"names":["useHealthImport"],"sourceRoot":"../../../../src","sources":["modules/bt-management/index.ts"],"mappings":";;AAAA,cAAc,gCAA6B;AAC3C,cAAc,4BAAyB;AACvC,cAAc,kCAA+B;AAC7C,cAAc,8BAA2B;AACzC,cAAc,6BAA0B;AACxC,cAAc,6BAA0B;AACxC,cAAc,qCAAkC;AAChD,cAAc,6BAA0B;AACxC,cAAc,+BAA4B;AAC1C,cAAc,kCAA+B;AAC7C,cAAc,8BAA2B;AACzC,cAAc,8BAA2B;AACzC,cAAc,6BAA0B;AACxC,cAAc,+BAA4B;AAC1C,cAAc,gCAA6B;AAC3C,cAAc,gCAA6B;AAC3C,cAAc,8BAA2B;AACzC,cAAc,2BAAwB;AACtC,cAAc,uBAAoB;AAClC,cAAc,0BAAuB;AACrC,cAAc,wBAAqB;AACnC,cAAc,0BAAuB;AACrC,cAAc,+BAA4B;AAC1C,cAAc,6BAA0B;AACxC,cAAc,yBAAsB;AACpC,cAAc,0BAAuB;AACrC,cAAc,6BAA0B;AACxC,cAAc,sCAAmC;AACjD,cAAc,4BAAyB;AACvC,cAAc,4BAAyB;AACvC,cAAc,2BAAwB;AACtC,cAAc,4BAAyB;AACvC,cAAc,0CAAuC;AACrD,cAAc,oCAAiC;AAC/C,cAAc,0BAAuB;AACrC,cAAc,uBAAoB;AAElC,cAAc,yCAAsC;AACpD,cAAc,0DAAuD;AACrE,cAAc,4CAAyC;AACvD,cAAc,0BAAuB;AACrC,cAAc,sDAAmD;AACjE,cAAc,2DAAwD;AACtE,cAAc,kDAA+C;AAC7D,cAAc,wDAAqD;AACnE,cAAc,4BAAyB;AACvC,cAAc,yBAAsB;AACpC,cAAc,oBAAW;AACzB,cAAc,2CAAwC;AACtD,cAAc,2DAAwD;AACtE,cAAc,yCAAsC;AACpD,cAAc,oDAAiD;AAC/D,cAAc,mDAAgD;AAC9D,cAAc,8CAA2C;AACzD,cAAc,0DAAuD;AACrE,cAAc,kDAA+C;AAC7D,cAAc,uDAAoD;AAClE,cAAc,iDAA8C;AAC5D,cAAc,gDAA6C;AAC3D,cAAc,qDAAkD;AAChE,cAAc,0CAAuC;AACrD,cAAc,0DAAuD;AACrE,cAAc,mDAAgD;AAC9D,cAAc,4CAAyC;AACvD,cAAc,4CAAyC;AACvD,cAAc,sCAAmC;AACjD,cAAc,iDAA8C;AAC5D,cAAc,4CAAyC;AACvD,cAAc,oDAAiD;AAC/D,cAAc,+DAA4D;AAC1E,cAAc,0DAAuD;AACrE,cAAc,wCAAqC;AACnD,cAAc,mDAAgD;AAC9D,cAAc,8CAA2C;AACzD,cAAc,8CAA2C;AACzD,cAAc,8CAA2C;AACzD,cAAc,gDAA6C;AAC3D,cAAc,iDAA8C;AAC5D,cAAc,kDAA+C;AAC7D,cAAc,oDAAiD;AAC/D,cAAc,qDAAkD;AAChE,cAAc,iDAA8C;AAC5D,cAAc,+CAA4C;AAC1D,cAAc,mDAAgD;AAC9D,cAAc,+CAA4C;AAC1D,cAAc,2CAAwC;AACtD,cAAc,8CAA2C;AACzD,cAAc,4CAAyC;AACvD,cAAc,0CAAuC;AACrD,cAAc,6CAA0C;AACxD,cAAc,+CAA4C;AAC1D,cAAc,+CAA4C;AAE1D,cAAc,0CAAuC;AAErD,cAAc,6BAA0B;AACxC,cAAc,yCAAsC;AACpD,cAAc,6CAA0C;AACxD,cAAc,oCAAiC;AAC/C,cAAc,qCAAkC;AAChD,cAAc,4BAAyB;AACvC,cAAc,gCAA6B;AAC3C,cAAc,+BAA4B;AAC1C,cAAc,oCAAiC;AAC/C,cAAc,+BAA4B;AAC1C,cAAc,kCAA+B;AAC7C,cAAc,0BAAuB;AACrC,cAAc,6BAA0B;AACxC,cAAc,gCAA6B;;AAE3C;AACA,SACEA,eAAe,QACV,yCAAsC;;AAE7C;;AAIA,cAAc,6BAA0B","ignoreList":[]}
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+
3
+ import { Modal, StyleSheet, View } from "react-native";
4
+ import { ActivityIndicator as PaperActivityIndicator, Button as PaperButton, Card as PaperCard, Text as PaperText } from "react-native-paper";
5
+ import { deviceTitle, useNearbyDeviceOffer } from "../../bt-management/index.js";
6
+ import { useOvokUi } from "../use-ovok-ui.js";
7
+ import { pairingErrorMessage } from "./pairing-error-message.js";
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ export const NearbyDevicePrompt = ({
10
+ storage,
11
+ storageKey,
12
+ declinedStorageKey,
13
+ enabled = true,
14
+ hint,
15
+ onPaired,
16
+ onError,
17
+ labels,
18
+ testID,
19
+ theme: themeOverride,
20
+ slots
21
+ }) => {
22
+ const {
23
+ theme,
24
+ slots: uiSlots
25
+ } = useOvokUi({
26
+ theme: themeOverride,
27
+ slots
28
+ });
29
+ const {
30
+ device,
31
+ status,
32
+ error,
33
+ accept,
34
+ decline,
35
+ later
36
+ } = useNearbyDeviceOffer({
37
+ storage,
38
+ storageKey,
39
+ declinedStorageKey,
40
+ enabled,
41
+ onPaired,
42
+ onError
43
+ });
44
+ const Text = uiSlots.Text ?? PaperText;
45
+ const Button = uiSlots.Button ?? PaperButton;
46
+ const Card = uiSlots.Card ?? PaperCard;
47
+ const Activity = uiSlots.ActivityIndicator ?? PaperActivityIndicator;
48
+ const copy = (key, fallback) => labels?.[key] ?? fallback;
49
+ const title = device ? copy("title", `A ${deviceTitle(device.deviceData)} is nearby. Is it yours?`) : "";
50
+ const errorCopy = error ? pairingErrorMessage(error, labels) : undefined;
51
+ return /*#__PURE__*/_jsx(Modal, {
52
+ visible: Boolean(device),
53
+ transparent: true,
54
+ animationType: "fade",
55
+ onRequestClose: later,
56
+ testID: testID,
57
+ children: /*#__PURE__*/_jsx(View, {
58
+ accessibilityViewIsModal: true,
59
+ style: [styles.backdrop, {
60
+ backgroundColor: "rgba(0, 0, 0, 0.5)"
61
+ }],
62
+ children: Card ? /*#__PURE__*/_jsxs(Card, {
63
+ theme: theme,
64
+ mode: "elevated",
65
+ style: styles.card,
66
+ children: [Text ? /*#__PURE__*/_jsx(Text, {
67
+ theme: theme,
68
+ variant: "titleLarge",
69
+ children: title
70
+ }) : null, hint || labels?.hint ? Text ? /*#__PURE__*/_jsx(Text, {
71
+ theme: theme,
72
+ variant: "bodyMedium",
73
+ children: hint ?? labels?.hint
74
+ }) : null : null, errorCopy && Text ? /*#__PURE__*/_jsx(Text, {
75
+ theme: theme,
76
+ variant: "bodyMedium",
77
+ style: {
78
+ color: theme.colors.error
79
+ },
80
+ testID: testID ? `${testID}-error` : undefined,
81
+ children: errorCopy
82
+ }) : null, status === "pairing" ? /*#__PURE__*/_jsxs(View, {
83
+ style: styles.pairing,
84
+ children: [Activity ? /*#__PURE__*/_jsx(Activity, {
85
+ theme: theme
86
+ }) : null, Text ? /*#__PURE__*/_jsx(Text, {
87
+ theme: theme,
88
+ variant: "bodyMedium",
89
+ children: copy("pairing", "Connecting…")
90
+ }) : null]
91
+ }) : null, /*#__PURE__*/_jsxs(View, {
92
+ style: styles.actions,
93
+ children: [Button ? /*#__PURE__*/_jsx(Button, {
94
+ theme: theme,
95
+ mode: "text",
96
+ disabled: status === "pairing",
97
+ onPress: later,
98
+ testID: testID ? `${testID}-later` : undefined,
99
+ children: copy("later", "Later")
100
+ }) : null, Button ? /*#__PURE__*/_jsx(Button, {
101
+ theme: theme,
102
+ mode: "text",
103
+ disabled: status === "pairing",
104
+ onPress: () => void decline().catch(() => undefined),
105
+ testID: testID ? `${testID}-decline` : undefined,
106
+ children: copy("notMine", "Not mine")
107
+ }) : null, Button ? /*#__PURE__*/_jsx(Button, {
108
+ theme: theme,
109
+ mode: "contained",
110
+ loading: status === "pairing",
111
+ disabled: status === "pairing",
112
+ onPress: () => void accept().catch(() => undefined),
113
+ testID: testID ? `${testID}-accept` : undefined,
114
+ children: status === "error" ? copy("retry", "Try again") : copy("pair", "Yes, pair it")
115
+ }) : null]
116
+ })]
117
+ }) : null
118
+ })
119
+ });
120
+ };
121
+ const styles = StyleSheet.create({
122
+ backdrop: {
123
+ alignItems: "center",
124
+ flex: 1,
125
+ justifyContent: "center",
126
+ padding: 24
127
+ },
128
+ card: {
129
+ gap: 12,
130
+ maxWidth: 480,
131
+ padding: 20,
132
+ width: "100%"
133
+ },
134
+ pairing: {
135
+ alignItems: "center",
136
+ flexDirection: "row",
137
+ gap: 8
138
+ },
139
+ actions: {
140
+ flexDirection: "row",
141
+ flexWrap: "wrap",
142
+ justifyContent: "flex-end"
143
+ }
144
+ });
145
+ //# sourceMappingURL=nearby-device-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Modal","StyleSheet","View","ActivityIndicator","PaperActivityIndicator","Button","PaperButton","Card","PaperCard","Text","PaperText","deviceTitle","useNearbyDeviceOffer","useOvokUi","pairingErrorMessage","jsx","_jsx","jsxs","_jsxs","NearbyDevicePrompt","storage","storageKey","declinedStorageKey","enabled","hint","onPaired","onError","labels","testID","theme","themeOverride","slots","uiSlots","device","status","error","accept","decline","later","Activity","copy","key","fallback","title","deviceData","errorCopy","undefined","visible","Boolean","transparent","animationType","onRequestClose","children","accessibilityViewIsModal","style","styles","backdrop","backgroundColor","mode","card","variant","color","colors","pairing","actions","disabled","onPress","catch","loading","create","alignItems","flex","justifyContent","padding","gap","maxWidth","width","flexDirection","flexWrap"],"sourceRoot":"../../../../../src","sources":["modules/ui/components/nearby-device-prompt.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ import { BluetoothErrorCode, toBluetoothError } from "../../bt-management/types/bluetooth-error.js";
4
+ export const pairingErrorMessage = (error, labels) => {
5
+ const normalized = toBluetoothError(error);
6
+ const fallback = normalized.code === BluetoothErrorCode.CONNECTION_FAILED ? "The device did not accept the connection. Put it in pairing mode and try again." : normalized.code === BluetoothErrorCode.PAIRING_REQUIRED ? "The device requires pairing. Follow its instructions and try again." : "Could not pair with the device. Please try again.";
7
+ return labels?.[normalized.code] ?? fallback;
8
+ };
9
+ //# sourceMappingURL=pairing-error-message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BluetoothErrorCode","toBluetoothError","pairingErrorMessage","error","labels","normalized","fallback","code","CONNECTION_FAILED","PAIRING_REQUIRED"],"sourceRoot":"../../../../../src","sources":["modules/ui/components/pairing-error-message.ts"],"mappings":";;AAAA,SACEA,kBAAkB,EAClBC,gBAAgB,QACX,8CAA2C;AAElD,OAAO,MAAMC,mBAAmB,GAAGA,CACjCC,KAAc,EACdC,MAA+B,KACpB;EACX,MAAMC,UAAU,GAAGJ,gBAAgB,CAACE,KAAK,CAAC;EAE1C,MAAMG,QAAQ,GAAGD,UAAU,CAACE,IAAI,KAAKP,kBAAkB,CAACQ,iBAAiB,GACrE,iFAAiF,GACjFH,UAAU,CAACE,IAAI,KAAKP,kBAAkB,CAACS,gBAAgB,GACrD,qEAAqE,GACrE,mDAAmD;EAEzD,OAAOL,MAAM,GAAGC,UAAU,CAACE,IAAI,CAAC,IAAID,QAAQ;AAC9C,CAAC","ignoreList":[]}
@@ -6,8 +6,8 @@ import * as React from "react";
6
6
  import { FlatList, Image, Pressable, StyleSheet, View } from "react-native";
7
7
  import { ActivityIndicator as PaperActivityIndicator, Button as PaperButton, Card as PaperCard, Text as PaperText, TextInput } from "react-native-paper";
8
8
  import { deviceTitle, useNearbyDevices, usePairedDevices, useRuntimeEvent } from "../../bt-management/index.js";
9
- import { BluetoothErrorCode, toBluetoothError } from "../../bt-management/types/bluetooth-error.js";
10
9
  import { useOvokUi } from "../use-ovok-ui.js";
10
+ import { pairingErrorMessage } from "./pairing-error-message.js";
11
11
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
12
12
  const deviceLabel = device => deviceTitle(device.deviceData);
13
13
  export const PairingFlow = ({
@@ -55,11 +55,6 @@ export const PairingFlow = ({
55
55
  const Input = uiSlots.TextInput ?? TextInput;
56
56
  const Activity = uiSlots.ActivityIndicator ?? PaperActivityIndicator;
57
57
  const copy = (key, fallback) => labels?.[key] ?? fallback;
58
- const pairingErrorMessage = error => {
59
- const normalized = toBluetoothError(error);
60
- const fallback = normalized.code === BluetoothErrorCode.CONNECTION_FAILED ? "The device did not accept the connection. Put it in pairing mode and try again." : normalized.code === BluetoothErrorCode.PAIRING_REQUIRED ? "The device requires pairing. Follow its instructions and try again." : "Could not pair with the device. Please try again.";
61
- return copy(normalized.code, fallback);
62
- };
63
58
  const renderState = {
64
59
  devices,
65
60
  paired,
@@ -92,7 +87,7 @@ export const PairingFlow = ({
92
87
  const nextError = cause instanceof Error ? cause : new Error(String(cause));
93
88
  if (!pairingCodeRequiredRef.current) {
94
89
  setStatus("error");
95
- setError(pairingErrorMessage(nextError));
90
+ setError(pairingErrorMessage(nextError, labels));
96
91
  }
97
92
  onError?.(nextError, device);
98
93
  }
@@ -108,7 +103,7 @@ export const PairingFlow = ({
108
103
  } catch (cause) {
109
104
  const nextError = cause instanceof Error ? cause : new Error(String(cause));
110
105
  setStatus("error");
111
- setError(pairingErrorMessage(nextError));
106
+ setError(pairingErrorMessage(nextError, labels));
112
107
  onError?.(nextError, selected);
113
108
  }
114
109
  };