@ovok/native 1.6.50 → 1.6.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -0
- package/lib/commonjs/index.js +18 -7
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/modules/auth/default-translation.js +6 -1
- package/lib/commonjs/modules/auth/default-translation.js.map +1 -1
- package/lib/commonjs/modules/auth/delete-account-button/components/delete-account-button.js +9 -14
- package/lib/commonjs/modules/auth/delete-account-button/components/delete-account-button.js.map +1 -1
- package/lib/commonjs/modules/auth/hooks/use-auth-action.js +41 -0
- package/lib/commonjs/modules/auth/hooks/use-auth-action.js.map +1 -0
- package/lib/commonjs/modules/auth/hooks/use-delete-account.js +27 -0
- package/lib/commonjs/modules/auth/hooks/use-delete-account.js.map +1 -0
- package/lib/commonjs/modules/auth/hooks/use-session.js +14 -86
- package/lib/commonjs/modules/auth/hooks/use-session.js.map +1 -1
- package/lib/commonjs/modules/auth/hooks/use-sign-in.js +66 -0
- package/lib/commonjs/modules/auth/hooks/use-sign-in.js.map +1 -0
- package/lib/commonjs/modules/auth/hooks/use-sign-out.js +15 -0
- package/lib/commonjs/modules/auth/hooks/use-sign-out.js.map +1 -0
- package/lib/commonjs/modules/auth/hooks/use-social-sign-in.js +92 -0
- package/lib/commonjs/modules/auth/hooks/use-social-sign-in.js.map +1 -0
- package/lib/commonjs/modules/auth/index.js +55 -0
- package/lib/commonjs/modules/auth/index.js.map +1 -1
- package/lib/commonjs/modules/auth/logout-button/components/logout-button.js +11 -16
- package/lib/commonjs/modules/auth/logout-button/components/logout-button.js.map +1 -1
- package/lib/commonjs/modules/auth/profile/components/profile-form-provider.js +5 -3
- package/lib/commonjs/modules/auth/profile/components/profile-form-provider.js.map +1 -1
- package/lib/commonjs/modules/auth/profile/contexts/profile-form-context.js +1 -1
- package/lib/commonjs/modules/auth/profile/contexts/profile-form-context.js.map +1 -1
- package/lib/commonjs/modules/auth/profile/hooks/use-profile-form.js +1 -1
- package/lib/commonjs/modules/auth/profile/hooks/use-profile-form.js.map +1 -1
- package/lib/commonjs/modules/auth/register/components/form/register-form-provider.js +6 -4
- package/lib/commonjs/modules/auth/register/components/form/register-form-provider.js.map +1 -1
- package/lib/commonjs/modules/auth/reset-password/components/form/inputs.js +2 -4
- package/lib/commonjs/modules/auth/reset-password/components/form/inputs.js.map +1 -1
- package/lib/commonjs/modules/auth/reset-password/components/form/reset-password-form-provider.js +6 -4
- package/lib/commonjs/modules/auth/reset-password/components/form/reset-password-form-provider.js.map +1 -1
- package/lib/commonjs/modules/auth/reset-password/contexts/reset-password-form-context.js +1 -1
- package/lib/commonjs/modules/auth/reset-password/contexts/reset-password-form-context.js.map +1 -1
- package/lib/commonjs/modules/auth/reset-password/hooks/use-reset-password-form.js +1 -1
- package/lib/commonjs/modules/auth/reset-password/hooks/use-reset-password-form.js.map +1 -1
- package/lib/commonjs/modules/auth/session/logout-session.js +29 -0
- package/lib/commonjs/modules/auth/session/logout-session.js.map +1 -0
- package/lib/commonjs/modules/auth/session/session-store.js +152 -0
- package/lib/commonjs/modules/auth/session/session-store.js.map +1 -0
- package/lib/commonjs/modules/auth/sign-in/components/form/login-form-provider.js +25 -41
- package/lib/commonjs/modules/auth/sign-in/components/form/login-form-provider.js.map +1 -1
- package/lib/commonjs/modules/auth/sign-in/components/social-logins/apple-login-button.js +13 -12
- package/lib/commonjs/modules/auth/sign-in/components/social-logins/apple-login-button.js.map +1 -1
- package/lib/commonjs/modules/auth/sign-in/components/social-logins/google-login-button.js +4 -4
- package/lib/commonjs/modules/auth/sign-in/components/social-logins/google-login-button.js.map +1 -1
- package/lib/commonjs/modules/auth/sign-in/contexts/login-form-context.js +1 -1
- package/lib/commonjs/modules/auth/sign-in/contexts/login-form-context.js.map +1 -1
- package/lib/commonjs/modules/auth/sign-in/hooks/use-login-form.js +1 -1
- package/lib/commonjs/modules/auth/sign-in/hooks/use-login-form.js.map +1 -1
- package/lib/commonjs/modules/bt-device/components/device-list-provider.js +5 -4
- package/lib/commonjs/modules/bt-device/components/device-list-provider.js.map +1 -1
- package/lib/commonjs/modules/bt-device/components/hooks/use-device-list.js +1 -1
- package/lib/commonjs/modules/bt-device/components/hooks/use-device-list.js.map +1 -1
- package/lib/commonjs/modules/bt-device/contexts/device-list-context.js +1 -4
- package/lib/commonjs/modules/bt-device/contexts/device-list-context.js.map +1 -1
- package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js +176 -84
- package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
- package/lib/commonjs/modules/bt-management/components/bt-provider.js +3 -2
- package/lib/commonjs/modules/bt-management/components/bt-provider.js.map +1 -1
- package/lib/commonjs/modules/bt-management/hooks/runtime-context.js +146 -14
- package/lib/commonjs/modules/bt-management/hooks/runtime-context.js.map +1 -1
- package/lib/commonjs/modules/bt-management/hooks/use-background-sync.js +17 -11
- package/lib/commonjs/modules/bt-management/hooks/use-background-sync.js.map +1 -1
- package/lib/commonjs/modules/bt-management/hooks/use-bluetooth-permission.js +100 -0
- package/lib/commonjs/modules/bt-management/hooks/use-bluetooth-permission.js.map +1 -0
- package/lib/commonjs/modules/bt-management/hooks/use-bluetooth-state.js +13 -26
- package/lib/commonjs/modules/bt-management/hooks/use-bluetooth-state.js.map +1 -1
- package/lib/commonjs/modules/bt-management/hooks/use-bt-device.js +148 -0
- package/lib/commonjs/modules/bt-management/hooks/use-bt-device.js.map +1 -0
- package/lib/commonjs/modules/bt-management/hooks/use-device-connection.js +10 -26
- package/lib/commonjs/modules/bt-management/hooks/use-device-connection.js.map +1 -1
- package/lib/commonjs/modules/bt-management/hooks/use-health-import.js +7 -76
- package/lib/commonjs/modules/bt-management/hooks/use-health-import.js.map +1 -1
- package/lib/commonjs/modules/bt-management/hooks/use-measurements.js +43 -57
- package/lib/commonjs/modules/bt-management/hooks/use-measurements.js.map +1 -1
- package/lib/commonjs/modules/bt-management/hooks/use-nearby-devices.js +12 -16
- package/lib/commonjs/modules/bt-management/hooks/use-nearby-devices.js.map +1 -1
- package/lib/commonjs/modules/bt-management/hooks/use-paired-devices.js +31 -12
- package/lib/commonjs/modules/bt-management/hooks/use-paired-devices.js.map +1 -1
- package/lib/commonjs/modules/bt-management/hooks/use-request-permissions.js +12 -55
- package/lib/commonjs/modules/bt-management/hooks/use-request-permissions.js.map +1 -1
- package/lib/commonjs/modules/bt-management/hooks/use-scan-control.js +6 -4
- package/lib/commonjs/modules/bt-management/hooks/use-scan-control.js.map +1 -1
- package/lib/commonjs/modules/bt-management/index.js +133 -11
- package/lib/commonjs/modules/bt-management/index.js.map +1 -1
- package/lib/commonjs/modules/cms/hooks/use-cms-content.js +50 -0
- package/lib/commonjs/modules/cms/hooks/use-cms-content.js.map +1 -0
- package/lib/commonjs/modules/cms/hooks/use-cms-locale.js +20 -0
- package/lib/commonjs/modules/cms/hooks/use-cms-locale.js.map +1 -0
- package/lib/commonjs/modules/cms/hooks/use-cms-translations.js +50 -0
- package/lib/commonjs/modules/cms/hooks/use-cms-translations.js.map +1 -0
- package/lib/commonjs/modules/cms/index.js +39 -0
- package/lib/commonjs/modules/cms/index.js.map +1 -0
- package/lib/commonjs/modules/cms/merge-cms-translations.js +49 -0
- package/lib/commonjs/modules/cms/merge-cms-translations.js.map +1 -0
- package/lib/commonjs/modules/data-sync/components/android/android-health-connect-authorization-provider.js +23 -18
- package/lib/commonjs/modules/data-sync/components/android/android-health-connect-authorization-provider.js.map +1 -1
- package/lib/commonjs/modules/data-sync/components/apple/apple-health-authorization-provider.js +19 -18
- package/lib/commonjs/modules/data-sync/components/apple/apple-health-authorization-provider.js.map +1 -1
- package/lib/commonjs/modules/data-sync/components/apple/apple-health-authorization-utils.js +20 -0
- package/lib/commonjs/modules/data-sync/components/apple/apple-health-authorization-utils.js.map +1 -0
- package/lib/commonjs/modules/data-sync/contexts/health-authorization-context.js +18 -0
- package/lib/commonjs/modules/data-sync/contexts/health-authorization-context.js.map +1 -0
- package/lib/commonjs/modules/data-sync/hooks/use-health-import.js +81 -0
- package/lib/commonjs/modules/data-sync/hooks/use-health-import.js.map +1 -0
- package/lib/commonjs/modules/data-sync/index.js +37 -0
- package/lib/commonjs/modules/data-sync/index.js.map +1 -1
- package/lib/commonjs/modules/helpers/hooks/use-shallow-stable-value.js +20 -0
- package/lib/commonjs/modules/helpers/hooks/use-shallow-stable-value.js.map +1 -0
- package/lib/commonjs/modules/language-switcher/components/language-switcher.js +12 -4
- package/lib/commonjs/modules/language-switcher/components/language-switcher.js.map +1 -1
- package/lib/commonjs/modules/language-switcher/components/option/context/language-option-context.js +1 -1
- package/lib/commonjs/modules/language-switcher/components/option/context/language-option-context.js.map +1 -1
- package/lib/commonjs/modules/language-switcher/components/option/language-switcher-option.js +5 -4
- package/lib/commonjs/modules/language-switcher/components/option/language-switcher-option.js.map +1 -1
- package/lib/commonjs/modules/socket/components/socket-provider.js +78 -73
- package/lib/commonjs/modules/socket/components/socket-provider.js.map +1 -1
- package/lib/commonjs/modules/tab/components/tab-provider.js +12 -1
- package/lib/commonjs/modules/tab/components/tab-provider.js.map +1 -1
- package/lib/commonjs/modules/tab/contexts/tab-context.js +1 -1
- package/lib/commonjs/modules/tab/contexts/tab-context.js.map +1 -1
- package/lib/commonjs/modules/tab/hooks/use-tab.js +1 -1
- package/lib/commonjs/modules/tab/hooks/use-tab.js.map +1 -1
- package/lib/commonjs/modules/ui/components/health-import-card.js +2 -3
- package/lib/commonjs/modules/ui/components/health-import-card.js.map +1 -1
- package/lib/commonjs/modules/ui/components/pairing-flow.js.map +1 -1
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/modules/auth/default-translation.js +3 -1
- package/lib/module/modules/auth/default-translation.js.map +1 -1
- package/lib/module/modules/auth/delete-account-button/components/delete-account-button.js +9 -14
- package/lib/module/modules/auth/delete-account-button/components/delete-account-button.js.map +1 -1
- package/lib/module/modules/auth/hooks/use-auth-action.js +36 -0
- package/lib/module/modules/auth/hooks/use-auth-action.js.map +1 -0
- package/lib/module/modules/auth/hooks/use-delete-account.js +22 -0
- package/lib/module/modules/auth/hooks/use-delete-account.js.map +1 -0
- package/lib/module/modules/auth/hooks/use-session.js +17 -88
- package/lib/module/modules/auth/hooks/use-session.js.map +1 -1
- package/lib/module/modules/auth/hooks/use-sign-in.js +61 -0
- package/lib/module/modules/auth/hooks/use-sign-in.js.map +1 -0
- package/lib/module/modules/auth/hooks/use-sign-out.js +10 -0
- package/lib/module/modules/auth/hooks/use-sign-out.js.map +1 -0
- package/lib/module/modules/auth/hooks/use-social-sign-in.js +86 -0
- package/lib/module/modules/auth/hooks/use-social-sign-in.js.map +1 -0
- package/lib/module/modules/auth/index.js +5 -0
- package/lib/module/modules/auth/index.js.map +1 -1
- package/lib/module/modules/auth/logout-button/components/logout-button.js +11 -16
- package/lib/module/modules/auth/logout-button/components/logout-button.js.map +1 -1
- package/lib/module/modules/auth/profile/components/profile-form-provider.js +5 -3
- package/lib/module/modules/auth/profile/components/profile-form-provider.js.map +1 -1
- package/lib/module/modules/auth/profile/contexts/profile-form-context.js +1 -1
- package/lib/module/modules/auth/profile/contexts/profile-form-context.js.map +1 -1
- package/lib/module/modules/auth/profile/hooks/use-profile-form.js +1 -1
- package/lib/module/modules/auth/profile/hooks/use-profile-form.js.map +1 -1
- package/lib/module/modules/auth/register/components/form/register-form-provider.js +6 -4
- package/lib/module/modules/auth/register/components/form/register-form-provider.js.map +1 -1
- package/lib/module/modules/auth/reset-password/components/form/inputs.js +2 -4
- package/lib/module/modules/auth/reset-password/components/form/inputs.js.map +1 -1
- package/lib/module/modules/auth/reset-password/components/form/reset-password-form-provider.js +6 -4
- package/lib/module/modules/auth/reset-password/components/form/reset-password-form-provider.js.map +1 -1
- package/lib/module/modules/auth/reset-password/contexts/reset-password-form-context.js +1 -1
- package/lib/module/modules/auth/reset-password/contexts/reset-password-form-context.js.map +1 -1
- package/lib/module/modules/auth/reset-password/hooks/use-reset-password-form.js +1 -1
- package/lib/module/modules/auth/reset-password/hooks/use-reset-password-form.js.map +1 -1
- package/lib/module/modules/auth/session/logout-session.js +24 -0
- package/lib/module/modules/auth/session/logout-session.js.map +1 -0
- package/lib/module/modules/auth/session/session-store.js +148 -0
- package/lib/module/modules/auth/session/session-store.js.map +1 -0
- package/lib/module/modules/auth/sign-in/components/form/login-form-provider.js +25 -41
- package/lib/module/modules/auth/sign-in/components/form/login-form-provider.js.map +1 -1
- package/lib/module/modules/auth/sign-in/components/social-logins/apple-login-button.js +13 -12
- package/lib/module/modules/auth/sign-in/components/social-logins/apple-login-button.js.map +1 -1
- package/lib/module/modules/auth/sign-in/components/social-logins/google-login-button.js +4 -4
- package/lib/module/modules/auth/sign-in/components/social-logins/google-login-button.js.map +1 -1
- package/lib/module/modules/auth/sign-in/contexts/login-form-context.js +1 -1
- package/lib/module/modules/auth/sign-in/contexts/login-form-context.js.map +1 -1
- package/lib/module/modules/auth/sign-in/hooks/use-login-form.js +1 -1
- package/lib/module/modules/auth/sign-in/hooks/use-login-form.js.map +1 -1
- package/lib/module/modules/bt-device/components/device-list-provider.js +5 -4
- package/lib/module/modules/bt-device/components/device-list-provider.js.map +1 -1
- package/lib/module/modules/bt-device/components/hooks/use-device-list.js +1 -1
- package/lib/module/modules/bt-device/components/hooks/use-device-list.js.map +1 -1
- package/lib/module/modules/bt-device/contexts/device-list-context.js +1 -4
- package/lib/module/modules/bt-device/contexts/device-list-context.js.map +1 -1
- package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js +175 -84
- package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
- package/lib/module/modules/bt-management/components/bt-provider.js +3 -2
- package/lib/module/modules/bt-management/components/bt-provider.js.map +1 -1
- package/lib/module/modules/bt-management/hooks/runtime-context.js +144 -13
- package/lib/module/modules/bt-management/hooks/runtime-context.js.map +1 -1
- package/lib/module/modules/bt-management/hooks/use-background-sync.js +17 -11
- package/lib/module/modules/bt-management/hooks/use-background-sync.js.map +1 -1
- package/lib/module/modules/bt-management/hooks/use-bluetooth-permission.js +94 -0
- package/lib/module/modules/bt-management/hooks/use-bluetooth-permission.js.map +1 -0
- package/lib/module/modules/bt-management/hooks/use-bluetooth-state.js +13 -26
- package/lib/module/modules/bt-management/hooks/use-bluetooth-state.js.map +1 -1
- package/lib/module/modules/bt-management/hooks/use-bt-device.js +142 -0
- package/lib/module/modules/bt-management/hooks/use-bt-device.js.map +1 -0
- package/lib/module/modules/bt-management/hooks/use-device-connection.js +11 -26
- package/lib/module/modules/bt-management/hooks/use-device-connection.js.map +1 -1
- package/lib/module/modules/bt-management/hooks/use-health-import.js +2 -73
- package/lib/module/modules/bt-management/hooks/use-health-import.js.map +1 -1
- package/lib/module/modules/bt-management/hooks/use-measurements.js +44 -58
- package/lib/module/modules/bt-management/hooks/use-measurements.js.map +1 -1
- package/lib/module/modules/bt-management/hooks/use-nearby-devices.js +13 -17
- package/lib/module/modules/bt-management/hooks/use-nearby-devices.js.map +1 -1
- package/lib/module/modules/bt-management/hooks/use-paired-devices.js +31 -12
- package/lib/module/modules/bt-management/hooks/use-paired-devices.js.map +1 -1
- package/lib/module/modules/bt-management/hooks/use-request-permissions.js +12 -54
- package/lib/module/modules/bt-management/hooks/use-request-permissions.js.map +1 -1
- package/lib/module/modules/bt-management/hooks/use-scan-control.js +6 -4
- package/lib/module/modules/bt-management/hooks/use-scan-control.js.map +1 -1
- package/lib/module/modules/bt-management/index.js +8 -1
- package/lib/module/modules/bt-management/index.js.map +1 -1
- package/lib/module/modules/cms/hooks/use-cms-content.js +44 -0
- package/lib/module/modules/cms/hooks/use-cms-content.js.map +1 -0
- package/lib/module/modules/cms/hooks/use-cms-locale.js +16 -0
- package/lib/module/modules/cms/hooks/use-cms-locale.js.map +1 -0
- package/lib/module/modules/cms/hooks/use-cms-translations.js +45 -0
- package/lib/module/modules/cms/hooks/use-cms-translations.js.map +1 -0
- package/lib/module/modules/cms/index.js +6 -0
- package/lib/module/modules/cms/index.js.map +1 -0
- package/lib/module/modules/cms/merge-cms-translations.js +46 -0
- package/lib/module/modules/cms/merge-cms-translations.js.map +1 -0
- package/lib/module/modules/data-sync/components/android/android-health-connect-authorization-provider.js +23 -18
- package/lib/module/modules/data-sync/components/android/android-health-connect-authorization-provider.js.map +1 -1
- package/lib/module/modules/data-sync/components/apple/apple-health-authorization-provider.js +18 -17
- package/lib/module/modules/data-sync/components/apple/apple-health-authorization-provider.js.map +1 -1
- package/lib/module/modules/data-sync/components/apple/apple-health-authorization-utils.js +16 -0
- package/lib/module/modules/data-sync/components/apple/apple-health-authorization-utils.js.map +1 -0
- package/lib/module/modules/data-sync/contexts/health-authorization-context.js +13 -0
- package/lib/module/modules/data-sync/contexts/health-authorization-context.js.map +1 -0
- package/lib/module/modules/data-sync/hooks/use-health-import.js +76 -0
- package/lib/module/modules/data-sync/hooks/use-health-import.js.map +1 -0
- package/lib/module/modules/data-sync/index.js +2 -0
- package/lib/module/modules/data-sync/index.js.map +1 -1
- package/lib/module/modules/helpers/hooks/use-shallow-stable-value.js +14 -0
- package/lib/module/modules/helpers/hooks/use-shallow-stable-value.js.map +1 -0
- package/lib/module/modules/language-switcher/components/language-switcher.js +11 -4
- package/lib/module/modules/language-switcher/components/language-switcher.js.map +1 -1
- package/lib/module/modules/language-switcher/components/option/context/language-option-context.js +1 -1
- package/lib/module/modules/language-switcher/components/option/context/language-option-context.js.map +1 -1
- package/lib/module/modules/language-switcher/components/option/language-switcher-option.js +5 -4
- package/lib/module/modules/language-switcher/components/option/language-switcher-option.js.map +1 -1
- package/lib/module/modules/socket/components/socket-provider.js +78 -73
- package/lib/module/modules/socket/components/socket-provider.js.map +1 -1
- package/lib/module/modules/tab/components/tab-provider.js +11 -1
- package/lib/module/modules/tab/components/tab-provider.js.map +1 -1
- package/lib/module/modules/tab/contexts/tab-context.js +1 -1
- package/lib/module/modules/tab/contexts/tab-context.js.map +1 -1
- package/lib/module/modules/tab/hooks/use-tab.js +1 -1
- package/lib/module/modules/tab/hooks/use-tab.js.map +1 -1
- package/lib/module/modules/ui/components/health-import-card.js +1 -2
- package/lib/module/modules/ui/components/health-import-card.js.map +1 -1
- package/lib/module/modules/ui/components/pairing-flow.js.map +1 -1
- package/lib/typescript/commonjs/src/index.d.ts +1 -0
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/default-translation.d.ts +53 -1
- package/lib/typescript/commonjs/src/modules/auth/default-translation.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/delete-account-button/components/delete-account-button.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/hooks/use-auth-action.d.ts +13 -0
- package/lib/typescript/commonjs/src/modules/auth/hooks/use-auth-action.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/auth/hooks/use-delete-account.d.ts +8 -0
- package/lib/typescript/commonjs/src/modules/auth/hooks/use-delete-account.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/auth/hooks/use-session.d.ts +6 -4
- package/lib/typescript/commonjs/src/modules/auth/hooks/use-session.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/hooks/use-sign-in.d.ts +24 -0
- package/lib/typescript/commonjs/src/modules/auth/hooks/use-sign-in.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/auth/hooks/use-sign-out.d.ts +4 -0
- package/lib/typescript/commonjs/src/modules/auth/hooks/use-sign-out.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/auth/hooks/use-social-sign-in.d.ts +14 -0
- package/lib/typescript/commonjs/src/modules/auth/hooks/use-social-sign-in.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/auth/index.d.ts +5 -0
- package/lib/typescript/commonjs/src/modules/auth/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/logout-button/components/logout-button.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/profile/components/profile-form-provider.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/profile/contexts/profile-form-context.d.ts +1 -1
- package/lib/typescript/commonjs/src/modules/auth/profile/contexts/profile-form-context.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/profile/hooks/use-profile-form.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/register/components/form/register-form-provider.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/reset-password/components/form/inputs.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/reset-password/components/form/reset-password-form-provider.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/reset-password/contexts/reset-password-form-context.d.ts +1 -1
- package/lib/typescript/commonjs/src/modules/auth/reset-password/contexts/reset-password-form-context.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/session/logout-session.d.ts +6 -0
- package/lib/typescript/commonjs/src/modules/auth/session/logout-session.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/auth/session/session-store.d.ts +21 -0
- package/lib/typescript/commonjs/src/modules/auth/session/session-store.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/auth/sign-in/components/form/login-form-provider.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/sign-in/components/social-logins/apple-login-button.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/sign-in/components/social-logins/google-login-button.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/auth/sign-in/contexts/login-form-context.d.ts +1 -1
- package/lib/typescript/commonjs/src/modules/auth/sign-in/contexts/login-form-context.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-device/components/device-list-provider.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-device/components/hooks/use-device-list.d.ts +1 -5
- package/lib/typescript/commonjs/src/modules/bt-device/components/hooks/use-device-list.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-device/contexts/device-list-context.d.ts +3 -2
- package/lib/typescript/commonjs/src/modules/bt-device/contexts/device-list-context.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider.d.ts +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/runtime-context.d.ts +40 -9
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/runtime-context.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-background-sync.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-bluetooth-permission.d.ts +17 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-bluetooth-permission.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-bluetooth-state.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-bt-device.d.ts +31 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-bt-device.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-device-connection.d.ts +2 -2
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-device-connection.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-health-import.d.ts +2 -15
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-health-import.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-measurements.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-nearby-devices.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-paired-devices.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-request-permissions.d.ts +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-request-permissions.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-scan-control.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts +6 -1
- package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/btprovider-props.d.ts +2 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/btprovider-props.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/cms/hooks/use-cms-content.d.ts +9 -0
- package/lib/typescript/commonjs/src/modules/cms/hooks/use-cms-content.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/cms/hooks/use-cms-locale.d.ts +7 -0
- package/lib/typescript/commonjs/src/modules/cms/hooks/use-cms-locale.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/cms/hooks/use-cms-translations.d.ts +10 -0
- package/lib/typescript/commonjs/src/modules/cms/hooks/use-cms-translations.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/cms/index.d.ts +4 -0
- package/lib/typescript/commonjs/src/modules/cms/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/cms/merge-cms-translations.d.ts +13 -0
- package/lib/typescript/commonjs/src/modules/cms/merge-cms-translations.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/data-sync/components/android/android-health-connect-authorization-provider.d.ts +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/components/android/android-health-connect-authorization-provider.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/components/apple/apple-health-authorization-provider.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/components/apple/apple-health-authorization-utils.d.ts +4 -0
- package/lib/typescript/commonjs/src/modules/data-sync/components/apple/apple-health-authorization-utils.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/data-sync/components/data-sync.d.ts +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/contexts/health-authorization-context.d.ts +17 -0
- package/lib/typescript/commonjs/src/modules/data-sync/contexts/health-authorization-context.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/data-sync/hooks/use-health-import.d.ts +17 -0
- package/lib/typescript/commonjs/src/modules/data-sync/hooks/use-health-import.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/data-sync/index.d.ts +3 -0
- package/lib/typescript/commonjs/src/modules/data-sync/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/types/health-authorization-status.d.ts +1 -0
- package/lib/typescript/commonjs/src/modules/data-sync/types/health-authorization-status.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/helpers/hooks/use-shallow-stable-value.d.ts +2 -0
- package/lib/typescript/commonjs/src/modules/helpers/hooks/use-shallow-stable-value.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/language-switcher/components/language-switcher.d.ts +6 -5
- package/lib/typescript/commonjs/src/modules/language-switcher/components/language-switcher.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/language-switcher/components/option/context/language-option-context.d.ts +1 -1
- package/lib/typescript/commonjs/src/modules/language-switcher/components/option/context/language-option-context.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/socket/components/socket-provider.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/tab/components/tab-provider.d.ts +2 -1
- package/lib/typescript/commonjs/src/modules/tab/components/tab-provider.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/tab/contexts/tab-context.d.ts +1 -1
- package/lib/typescript/commonjs/src/modules/tab/contexts/tab-context.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/ui/components/health-import-card.d.ts +1 -2
- package/lib/typescript/commonjs/src/modules/ui/components/health-import-card.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/ui/components/pairing-flow.d.ts.map +1 -1
- package/lib/typescript/module/src/index.d.ts +1 -0
- package/lib/typescript/module/src/index.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/default-translation.d.ts +53 -1
- package/lib/typescript/module/src/modules/auth/default-translation.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/delete-account-button/components/delete-account-button.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/hooks/use-auth-action.d.ts +13 -0
- package/lib/typescript/module/src/modules/auth/hooks/use-auth-action.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/auth/hooks/use-delete-account.d.ts +8 -0
- package/lib/typescript/module/src/modules/auth/hooks/use-delete-account.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/auth/hooks/use-session.d.ts +6 -4
- package/lib/typescript/module/src/modules/auth/hooks/use-session.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/hooks/use-sign-in.d.ts +24 -0
- package/lib/typescript/module/src/modules/auth/hooks/use-sign-in.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/auth/hooks/use-sign-out.d.ts +4 -0
- package/lib/typescript/module/src/modules/auth/hooks/use-sign-out.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/auth/hooks/use-social-sign-in.d.ts +14 -0
- package/lib/typescript/module/src/modules/auth/hooks/use-social-sign-in.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/auth/index.d.ts +5 -0
- package/lib/typescript/module/src/modules/auth/index.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/logout-button/components/logout-button.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/profile/components/profile-form-provider.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/profile/contexts/profile-form-context.d.ts +1 -1
- package/lib/typescript/module/src/modules/auth/profile/contexts/profile-form-context.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/profile/hooks/use-profile-form.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/register/components/form/register-form-provider.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/reset-password/components/form/inputs.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/reset-password/components/form/reset-password-form-provider.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/reset-password/contexts/reset-password-form-context.d.ts +1 -1
- package/lib/typescript/module/src/modules/auth/reset-password/contexts/reset-password-form-context.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/session/logout-session.d.ts +6 -0
- package/lib/typescript/module/src/modules/auth/session/logout-session.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/auth/session/session-store.d.ts +21 -0
- package/lib/typescript/module/src/modules/auth/session/session-store.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/auth/sign-in/components/form/login-form-provider.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/sign-in/components/social-logins/apple-login-button.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/sign-in/components/social-logins/google-login-button.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/auth/sign-in/contexts/login-form-context.d.ts +1 -1
- package/lib/typescript/module/src/modules/auth/sign-in/contexts/login-form-context.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-device/components/device-list-provider.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-device/components/hooks/use-device-list.d.ts +1 -5
- package/lib/typescript/module/src/modules/bt-device/components/hooks/use-device-list.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-device/contexts/device-list-context.d.ts +3 -2
- package/lib/typescript/module/src/modules/bt-device/contexts/device-list-context.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts +1 -1
- package/lib/typescript/module/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/components/bt-provider.d.ts +1 -1
- package/lib/typescript/module/src/modules/bt-management/components/bt-provider.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/hooks/runtime-context.d.ts +40 -9
- package/lib/typescript/module/src/modules/bt-management/hooks/runtime-context.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/hooks/use-background-sync.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/hooks/use-bluetooth-permission.d.ts +17 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-bluetooth-permission.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-bluetooth-state.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/hooks/use-bt-device.d.ts +31 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-bt-device.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-device-connection.d.ts +2 -2
- package/lib/typescript/module/src/modules/bt-management/hooks/use-device-connection.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/hooks/use-health-import.d.ts +2 -15
- package/lib/typescript/module/src/modules/bt-management/hooks/use-health-import.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/hooks/use-measurements.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/hooks/use-nearby-devices.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/hooks/use-paired-devices.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/hooks/use-request-permissions.d.ts +1 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-request-permissions.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/hooks/use-scan-control.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/index.d.ts +6 -1
- package/lib/typescript/module/src/modules/bt-management/index.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/types/btprovider-props.d.ts +2 -0
- package/lib/typescript/module/src/modules/bt-management/types/btprovider-props.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/cms/hooks/use-cms-content.d.ts +9 -0
- package/lib/typescript/module/src/modules/cms/hooks/use-cms-content.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/cms/hooks/use-cms-locale.d.ts +7 -0
- package/lib/typescript/module/src/modules/cms/hooks/use-cms-locale.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/cms/hooks/use-cms-translations.d.ts +10 -0
- package/lib/typescript/module/src/modules/cms/hooks/use-cms-translations.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/cms/index.d.ts +4 -0
- package/lib/typescript/module/src/modules/cms/index.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/cms/merge-cms-translations.d.ts +13 -0
- package/lib/typescript/module/src/modules/cms/merge-cms-translations.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/data-sync/components/android/android-health-connect-authorization-provider.d.ts +1 -1
- package/lib/typescript/module/src/modules/data-sync/components/android/android-health-connect-authorization-provider.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/components/apple/apple-health-authorization-provider.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/components/apple/apple-health-authorization-utils.d.ts +4 -0
- package/lib/typescript/module/src/modules/data-sync/components/apple/apple-health-authorization-utils.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/data-sync/components/data-sync.d.ts +1 -1
- package/lib/typescript/module/src/modules/data-sync/contexts/health-authorization-context.d.ts +17 -0
- package/lib/typescript/module/src/modules/data-sync/contexts/health-authorization-context.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/data-sync/hooks/use-health-import.d.ts +17 -0
- package/lib/typescript/module/src/modules/data-sync/hooks/use-health-import.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/data-sync/index.d.ts +3 -0
- package/lib/typescript/module/src/modules/data-sync/index.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/types/health-authorization-status.d.ts +1 -0
- package/lib/typescript/module/src/modules/data-sync/types/health-authorization-status.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/helpers/hooks/use-shallow-stable-value.d.ts +2 -0
- package/lib/typescript/module/src/modules/helpers/hooks/use-shallow-stable-value.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/language-switcher/components/language-switcher.d.ts +6 -5
- package/lib/typescript/module/src/modules/language-switcher/components/language-switcher.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/language-switcher/components/option/context/language-option-context.d.ts +1 -1
- package/lib/typescript/module/src/modules/language-switcher/components/option/context/language-option-context.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/socket/components/socket-provider.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/tab/components/tab-provider.d.ts +2 -1
- package/lib/typescript/module/src/modules/tab/components/tab-provider.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/tab/contexts/tab-context.d.ts +1 -1
- package/lib/typescript/module/src/modules/tab/contexts/tab-context.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/ui/components/health-import-card.d.ts +1 -2
- package/lib/typescript/module/src/modules/ui/components/health-import-card.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/ui/components/pairing-flow.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useBTDevice = exports.DeviceSelectionRequiredError = void 0;
|
|
7
|
+
var React = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _runtimeContext = require("./runtime-context.js");
|
|
9
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
10
|
+
class DeviceSelectionRequiredError extends Error {
|
|
11
|
+
constructor(model, ids) {
|
|
12
|
+
super(`Choose a device ID for ${model}; found ${ids.join(", ")}.`);
|
|
13
|
+
this.name = "DeviceSelectionRequiredError";
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.DeviceSelectionRequiredError = DeviceSelectionRequiredError;
|
|
17
|
+
const EMPTY_RESULTS = [];
|
|
18
|
+
const EMPTY_EVENTS = [];
|
|
19
|
+
const deviceQueues = new WeakMap();
|
|
20
|
+
const serializeForDevice = (runtime, deviceId, operation) => {
|
|
21
|
+
let queues = deviceQueues.get(runtime);
|
|
22
|
+
if (!queues) {
|
|
23
|
+
queues = new Map();
|
|
24
|
+
deviceQueues.set(runtime, queues);
|
|
25
|
+
}
|
|
26
|
+
const previous = queues.get(deviceId) ?? Promise.resolve();
|
|
27
|
+
const current = previous.catch(() => undefined).then(operation);
|
|
28
|
+
queues.set(deviceId, current);
|
|
29
|
+
void current.finally(() => {
|
|
30
|
+
if (queues?.get(deviceId) === current) {
|
|
31
|
+
queues.delete(deviceId);
|
|
32
|
+
}
|
|
33
|
+
}).catch(() => undefined);
|
|
34
|
+
return current;
|
|
35
|
+
};
|
|
36
|
+
const getRawDevice = device => device.device.device;
|
|
37
|
+
const useBTDevice = (model, {
|
|
38
|
+
id,
|
|
39
|
+
autoConnect = false,
|
|
40
|
+
allowRawAccess = false
|
|
41
|
+
} = {}) => {
|
|
42
|
+
const runtime = (0, _runtimeContext.useBluetoothRuntime)();
|
|
43
|
+
const [selectedId, setSelectedId] = React.useState(id);
|
|
44
|
+
const matches = (0, _runtimeContext.useBluetoothSelector)(snapshot => snapshot.devices.filter(device => device.deviceData.name === model || device.deviceData.model === model), (previous, next) => previous.length === next.length && previous.every((item, index) => {
|
|
45
|
+
const candidate = next[index];
|
|
46
|
+
return candidate?.id === item.id && candidate === item;
|
|
47
|
+
}));
|
|
48
|
+
const selected = selectedId ? matches.find(device => device.id === selectedId) : matches.length === 1 ? matches[0] : undefined;
|
|
49
|
+
const selectedIdRef = React.useRef(selectedId);
|
|
50
|
+
const matchesRef = React.useRef(matches);
|
|
51
|
+
const modelRef = React.useRef(model);
|
|
52
|
+
const autoConnectedRef = React.useRef(new Set());
|
|
53
|
+
selectedIdRef.current = selectedId;
|
|
54
|
+
matchesRef.current = matches;
|
|
55
|
+
modelRef.current = model;
|
|
56
|
+
React.useEffect(() => {
|
|
57
|
+
if (id !== undefined) {
|
|
58
|
+
setSelectedId(id);
|
|
59
|
+
}
|
|
60
|
+
}, [id]);
|
|
61
|
+
React.useEffect(() => {
|
|
62
|
+
if (!autoConnect || !selected) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (autoConnectedRef.current.has(selected.id)) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
autoConnectedRef.current.add(selected.id);
|
|
69
|
+
void selected.device.connect().catch(() => {
|
|
70
|
+
autoConnectedRef.current.delete(selected.id);
|
|
71
|
+
});
|
|
72
|
+
}, [autoConnect, selected]);
|
|
73
|
+
const select = React.useCallback(deviceId => {
|
|
74
|
+
if (!matchesRef.current.some(device => device.id === deviceId)) {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
setSelectedId(deviceId);
|
|
78
|
+
return true;
|
|
79
|
+
}, []);
|
|
80
|
+
const connect = React.useCallback(async () => {
|
|
81
|
+
const currentMatches = matchesRef.current;
|
|
82
|
+
const device = currentMatches.find(candidate => candidate.id === selectedIdRef.current) ?? (currentMatches.length === 1 ? currentMatches[0] : undefined);
|
|
83
|
+
if (!device) {
|
|
84
|
+
throw new DeviceSelectionRequiredError(modelRef.current, currentMatches.map(candidate => candidate.id));
|
|
85
|
+
}
|
|
86
|
+
await device.device.connect();
|
|
87
|
+
}, []);
|
|
88
|
+
const disconnect = React.useCallback(async () => {
|
|
89
|
+
const currentMatches = matchesRef.current;
|
|
90
|
+
const device = currentMatches.find(candidate => candidate.id === selectedIdRef.current) ?? (currentMatches.length === 1 ? currentMatches[0] : undefined);
|
|
91
|
+
if (!device) {
|
|
92
|
+
throw new DeviceSelectionRequiredError(modelRef.current, currentMatches.map(candidate => candidate.id));
|
|
93
|
+
}
|
|
94
|
+
await device.device.disconnect();
|
|
95
|
+
}, []);
|
|
96
|
+
const raw = React.useMemo(() => {
|
|
97
|
+
if (!allowRawAccess) {
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|
|
100
|
+
const resolveDevice = () => {
|
|
101
|
+
const currentMatches = matchesRef.current;
|
|
102
|
+
const device = currentMatches.find(candidate => candidate.id === selectedIdRef.current) ?? (currentMatches.length === 1 ? currentMatches[0] : undefined);
|
|
103
|
+
if (!device) {
|
|
104
|
+
throw new DeviceSelectionRequiredError(modelRef.current, currentMatches.map(candidate => candidate.id));
|
|
105
|
+
}
|
|
106
|
+
const rawDevice = getRawDevice(device);
|
|
107
|
+
if (!rawDevice) {
|
|
108
|
+
throw new Error("Raw Bluetooth access is unavailable for this device.");
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
device,
|
|
112
|
+
rawDevice
|
|
113
|
+
};
|
|
114
|
+
};
|
|
115
|
+
return {
|
|
116
|
+
read: (serviceUUID, characteristicUUID) => {
|
|
117
|
+
const {
|
|
118
|
+
device,
|
|
119
|
+
rawDevice
|
|
120
|
+
} = resolveDevice();
|
|
121
|
+
return serializeForDevice(runtime, device.id, () => rawDevice.readCharacteristicForService(serviceUUID, characteristicUUID));
|
|
122
|
+
},
|
|
123
|
+
write: (serviceUUID, characteristicUUID, base64Value, withResponse = true) => {
|
|
124
|
+
const {
|
|
125
|
+
device,
|
|
126
|
+
rawDevice
|
|
127
|
+
} = resolveDevice();
|
|
128
|
+
return serializeForDevice(runtime, device.id, () => withResponse ? rawDevice.writeCharacteristicWithResponseForService(serviceUUID, characteristicUUID, base64Value) : rawDevice.writeCharacteristicWithoutResponseForService(serviceUUID, characteristicUUID, base64Value));
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
}, [allowRawAccess, runtime]);
|
|
132
|
+
return {
|
|
133
|
+
model,
|
|
134
|
+
devices: matches,
|
|
135
|
+
device: selected,
|
|
136
|
+
requiresSelection: matches.length > 1 && selected === undefined,
|
|
137
|
+
status: selected?.status,
|
|
138
|
+
latestResult: selected?.latestResult,
|
|
139
|
+
results: selected?.results ?? EMPTY_RESULTS,
|
|
140
|
+
events: selected?.events ?? EMPTY_EVENTS,
|
|
141
|
+
select,
|
|
142
|
+
connect,
|
|
143
|
+
disconnect,
|
|
144
|
+
raw
|
|
145
|
+
};
|
|
146
|
+
};
|
|
147
|
+
exports.useBTDevice = useBTDevice;
|
|
148
|
+
//# sourceMappingURL=use-bt-device.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","_interopRequireWildcard","require","_runtimeContext","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DeviceSelectionRequiredError","Error","constructor","model","ids","join","name","exports","EMPTY_RESULTS","EMPTY_EVENTS","deviceQueues","serializeForDevice","runtime","deviceId","operation","queues","Map","previous","Promise","resolve","current","catch","undefined","then","finally","delete","getRawDevice","device","useBTDevice","id","autoConnect","allowRawAccess","useBluetoothRuntime","selectedId","setSelectedId","useState","matches","useBluetoothSelector","snapshot","devices","filter","deviceData","next","length","every","item","index","candidate","selected","find","selectedIdRef","useRef","matchesRef","modelRef","autoConnectedRef","Set","useEffect","add","connect","select","useCallback","some","currentMatches","map","disconnect","raw","useMemo","resolveDevice","rawDevice","read","serviceUUID","characteristicUUID","readCharacteristicForService","write","base64Value","withResponse","writeCharacteristicWithResponseForService","writeCharacteristicWithoutResponseForService","requiresSelection","status","latestResult","results","events"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/hooks/use-bt-device.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,36 +4,20 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.useDeviceConnection = void 0;
|
|
7
|
-
var React = _interopRequireWildcard(require("react"));
|
|
8
7
|
var _runtimeContext = require("./runtime-context.js");
|
|
9
|
-
|
|
8
|
+
const EMPTY_EVENTS = [];
|
|
10
9
|
const useDeviceConnection = id => {
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}, [id, runtime]);
|
|
18
|
-
React.useEffect(() => {
|
|
19
|
-
const unsubStatus = runtime.subscribe("status", value => {
|
|
20
|
-
if (value.deviceData.id === id) {
|
|
21
|
-
setStatus(value.status);
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
const unsubEvent = runtime.subscribe("connection", event => {
|
|
25
|
-
if (event.deviceData.id === id) {
|
|
26
|
-
setEvents(current => [...current, event].slice(-100));
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
return () => {
|
|
30
|
-
unsubStatus();
|
|
31
|
-
unsubEvent();
|
|
10
|
+
const connection = (0, _runtimeContext.useBluetoothSelector)(snapshot => {
|
|
11
|
+
const device = id ? snapshot.devices.find(candidate => candidate.id === id) : undefined;
|
|
12
|
+
const events = device?.events;
|
|
13
|
+
return {
|
|
14
|
+
status: device?.status,
|
|
15
|
+
events: events?.length ? events : EMPTY_EVENTS
|
|
32
16
|
};
|
|
33
|
-
},
|
|
17
|
+
}, (previous, next) => previous.status === next.status && previous.events === next.events);
|
|
34
18
|
return {
|
|
35
|
-
status,
|
|
36
|
-
events
|
|
19
|
+
status: connection.status,
|
|
20
|
+
events: connection.events
|
|
37
21
|
};
|
|
38
22
|
};
|
|
39
23
|
exports.useDeviceConnection = useDeviceConnection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_runtimeContext","require","EMPTY_EVENTS","useDeviceConnection","id","connection","useBluetoothSelector","snapshot","device","devices","find","candidate","undefined","events","status","length","previous","next","exports"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/hooks/use-device-connection.ts"],"mappings":";;;;;;AAEA,IAAAA,eAAA,GAAAC,OAAA;AAKA,MAAMC,YAA+C,GAAG,EAAE;AAEnD,MAAMC,mBAAmB,GAC9BC,EAAW,IAC8D;EACzE,MAAMC,UAAU,GAAG,IAAAC,oCAAoB,EACpCC,QAAQ,IAAK;IACZ,MAAMC,MAAM,GAAGJ,EAAE,GACbG,QAAQ,CAACE,OAAO,CAACC,IAAI,CAAEC,SAAS,IAAKA,SAAS,CAACP,EAAE,KAAKA,EAAE,CAAC,GACzDQ,SAAS;IAEb,MAAMC,MAAM,GAAGL,MAAM,EAAEK,MAAM;IAE7B,OAAO;MACLC,MAAM,EAAEN,MAAM,EAAEM,MAAM;MACtBD,MAAM,EAAEA,MAAM,EAAEE,MAAM,GAAGF,MAAM,GAAGX;IACpC,CAAC;EACH,CAAC,EACD,CAACc,QAAQ,EAAEC,IAAI,KACbD,QAAQ,CAACF,MAAM,KAAKG,IAAI,CAACH,MAAM,IAAIE,QAAQ,CAACH,MAAM,KAAKI,IAAI,CAACJ,MAChE,CAAC;EAED,OAAO;IACLC,MAAM,EAAET,UAAU,CAACS,MAAM;IACzBD,MAAM,EAAER,UAAU,CAACQ;EACrB,CAAC;AACH,CAAC;AAACK,OAAA,CAAAf,mBAAA,GAAAA,mBAAA","ignoreList":[]}
|
|
@@ -3,80 +3,11 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}) => {
|
|
14
|
-
const [enabled, setEnabled] = React.useState(false);
|
|
15
|
-
const [statusByType, setStatusByType] = React.useState({});
|
|
16
|
-
const [error, setError] = React.useState();
|
|
17
|
-
const typesKey = React.useMemo(() => types.join("\u0000"), [types]);
|
|
18
|
-
const configRef = React.useRef({
|
|
19
|
-
adapter,
|
|
20
|
-
types,
|
|
21
|
-
background
|
|
22
|
-
});
|
|
23
|
-
configRef.current = {
|
|
24
|
-
adapter,
|
|
25
|
-
types,
|
|
26
|
-
background
|
|
27
|
-
};
|
|
28
|
-
const refresh = React.useCallback(async () => {
|
|
29
|
-
void typesKey;
|
|
30
|
-
const {
|
|
31
|
-
adapter: currentAdapter,
|
|
32
|
-
types: currentTypes
|
|
33
|
-
} = configRef.current;
|
|
34
|
-
const entries = await Promise.allSettled(currentTypes.map(async type => [type, await currentAdapter.getStatus(type)]));
|
|
35
|
-
const rejected = entries.find(entry => entry.status === "rejected");
|
|
36
|
-
setStatusByType(current => {
|
|
37
|
-
const next = {
|
|
38
|
-
...current
|
|
39
|
-
};
|
|
40
|
-
entries.forEach(entry => {
|
|
41
|
-
if (entry.status === "fulfilled") {
|
|
42
|
-
next[entry.value[0]] = entry.value[1];
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
return next;
|
|
46
|
-
});
|
|
47
|
-
setEnabled(currentTypes.length > 0 && entries.every(entry => entry.status === "fulfilled" && entry.value[1] === "authorized"));
|
|
48
|
-
setError(rejected ? rejected.reason instanceof Error ? rejected.reason : new Error(String(rejected.reason)) : undefined);
|
|
49
|
-
}, [typesKey]);
|
|
50
|
-
React.useEffect(() => {
|
|
51
|
-
void refresh();
|
|
52
|
-
}, [refresh]);
|
|
53
|
-
const setEnabledForTypes = React.useCallback(async next => {
|
|
54
|
-
const {
|
|
55
|
-
adapter: currentAdapter,
|
|
56
|
-
types: currentTypes,
|
|
57
|
-
background: currentBackground
|
|
58
|
-
} = configRef.current;
|
|
59
|
-
setError(undefined);
|
|
60
|
-
try {
|
|
61
|
-
if (next) {
|
|
62
|
-
await currentAdapter.request(currentTypes, currentBackground);
|
|
63
|
-
await refresh();
|
|
64
|
-
}
|
|
65
|
-
setEnabled(next);
|
|
66
|
-
} catch (cause) {
|
|
67
|
-
const nextError = cause instanceof Error ? cause : new Error(String(cause));
|
|
68
|
-
setError(nextError);
|
|
69
|
-
throw nextError;
|
|
70
|
-
}
|
|
71
|
-
}, [refresh]);
|
|
72
|
-
const notShared = types.filter(type => statusByType[type] === "refused");
|
|
73
|
-
return {
|
|
74
|
-
enabled,
|
|
75
|
-
setEnabled: setEnabledForTypes,
|
|
76
|
-
statusByType: statusByType,
|
|
77
|
-
notShared,
|
|
78
|
-
error
|
|
79
|
-
};
|
|
80
|
-
};
|
|
81
|
-
exports.useHealthImport = useHealthImport;
|
|
6
|
+
Object.defineProperty(exports, "useHealthImport", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _useHealthImport.useHealthImport;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _useHealthImport = require("../../data-sync/hooks/use-health-import.js");
|
|
82
13
|
//# sourceMappingURL=use-health-import.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_useHealthImport","require"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/hooks/use-health-import.ts"],"mappings":";;;;;;;;;;;AACA,IAAAA,gBAAA,GAAAC,OAAA","ignoreList":[]}
|
|
@@ -7,72 +7,58 @@ exports.useMeasurements = void 0;
|
|
|
7
7
|
var React = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _runtimeContext = require("./runtime-context.js");
|
|
9
9
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
10
|
+
const sameResults = (previous, next) => previous.length === next.length && previous.every((result, index) => result === next[index]);
|
|
11
|
+
const getMeasurementType = result => String(result.data.measurementTypeKey);
|
|
12
|
+
const applyResultPolicy = (results, policy, getConnectionId) => {
|
|
13
|
+
if (policy === "all") {
|
|
14
|
+
return [...results];
|
|
15
|
+
}
|
|
16
|
+
const seen = new Set();
|
|
17
|
+
return results.filter(result => {
|
|
18
|
+
const type = getMeasurementType(result);
|
|
19
|
+
const connectionId = getConnectionId(result);
|
|
20
|
+
if (policy === "first-reading-per-kind-per-connection") {
|
|
21
|
+
const key = `${result.deviceData.id}:${connectionId}:${type}`;
|
|
22
|
+
if (seen.has(key)) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
seen.add(key);
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
const temporal = result.data;
|
|
29
|
+
const end = temporal.end instanceof Date ? temporal.end : undefined;
|
|
30
|
+
if (end && end.getTime() > Date.now()) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
const day = temporal.end ?? temporal.start ?? temporal.recordedAt;
|
|
34
|
+
if (!(day instanceof Date)) {
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
const key = `${result.deviceData.id}:${connectionId}:${type}:${day.toISOString().slice(0, 10)}`;
|
|
38
|
+
if (seen.has(key)) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
seen.add(key);
|
|
42
|
+
return true;
|
|
43
|
+
});
|
|
44
|
+
};
|
|
10
45
|
const useMeasurements = (onResult, {
|
|
11
46
|
policy = "all",
|
|
12
47
|
maxResults = 100
|
|
13
48
|
} = {}) => {
|
|
14
49
|
const runtime = (0, _runtimeContext.useBluetoothRuntime)();
|
|
15
|
-
const
|
|
16
|
-
const seen = React.useRef(new Set());
|
|
17
|
-
const seenMeasurementKinds = React.useRef(new Set());
|
|
18
|
-
const seenDailyTotals = React.useRef(new Set());
|
|
50
|
+
const results = (0, _runtimeContext.useBluetoothSelector)(snapshot => snapshot.devices.flatMap(device => device.results ?? []), sameResults);
|
|
19
51
|
const onResultRef = React.useRef(onResult);
|
|
20
52
|
onResultRef.current = onResult;
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
seenMeasurementKinds.current.add(measurementTypeKey);
|
|
28
|
-
}
|
|
29
|
-
if (policy === "daily-totals-only") {
|
|
30
|
-
const temporal = result.data;
|
|
31
|
-
const end = temporal.end instanceof Date ? temporal.end : undefined;
|
|
32
|
-
if (end && end.getTime() > Date.now()) {
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
const day = temporal.end ?? temporal.start ?? temporal.recordedAt;
|
|
36
|
-
if (day instanceof Date) {
|
|
37
|
-
const key = `${measurementTypeKey}:${day.toISOString().slice(0, 10)}`;
|
|
38
|
-
if (seenDailyTotals.current.has(key)) {
|
|
39
|
-
return false;
|
|
40
|
-
}
|
|
41
|
-
seenDailyTotals.current.add(key);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
return true;
|
|
45
|
-
}, [policy]);
|
|
46
|
-
React.useEffect(() => {
|
|
47
|
-
return runtime.subscribe("result", result => {
|
|
48
|
-
if (!acceptsResult(result)) {
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
if (seen.current.has(result.id)) {
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
seen.current.add(result.id);
|
|
55
|
-
setMeasurements(current => [...current, result].slice(-maxResults));
|
|
56
|
-
onResultRef.current?.(result);
|
|
57
|
-
});
|
|
58
|
-
}, [acceptsResult, maxResults, runtime]);
|
|
59
|
-
React.useEffect(() => {
|
|
60
|
-
const unsubscribe = runtime.subscribe("connection", event => {
|
|
61
|
-
if (event.kind === "connected" || event.kind === "bonded") {
|
|
62
|
-
seenMeasurementKinds.current.clear();
|
|
63
|
-
seenDailyTotals.current.clear();
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
return unsubscribe;
|
|
67
|
-
}, [runtime]);
|
|
53
|
+
const measurements = React.useMemo(() => {
|
|
54
|
+
const accepted = applyResultPolicy(results, policy, runtime.getResultConnectionId);
|
|
55
|
+
return maxResults > 0 ? accepted.slice(-maxResults) : [];
|
|
56
|
+
}, [maxResults, policy, results, runtime]);
|
|
57
|
+
React.useEffect(() => runtime.subscribe("result", result => onResultRef.current?.(result)), [runtime]);
|
|
58
|
+
const clear = React.useCallback(() => runtime.clearResults(), [runtime]);
|
|
68
59
|
return {
|
|
69
60
|
measurements,
|
|
70
|
-
clear
|
|
71
|
-
seen.current.clear();
|
|
72
|
-
seenMeasurementKinds.current.clear();
|
|
73
|
-
seenDailyTotals.current.clear();
|
|
74
|
-
setMeasurements([]);
|
|
75
|
-
}
|
|
61
|
+
clear
|
|
76
62
|
};
|
|
77
63
|
};
|
|
78
64
|
exports.useMeasurements = useMeasurements;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","_interopRequireWildcard","require","_runtimeContext","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","
|
|
1
|
+
{"version":3,"names":["React","_interopRequireWildcard","require","_runtimeContext","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","sameResults","previous","next","length","every","result","index","getMeasurementType","String","data","measurementTypeKey","applyResultPolicy","results","policy","getConnectionId","seen","Set","filter","type","connectionId","key","deviceData","id","add","temporal","end","Date","undefined","getTime","now","day","start","recordedAt","toISOString","slice","useMeasurements","onResult","maxResults","runtime","useBluetoothRuntime","useBluetoothSelector","snapshot","devices","flatMap","device","onResultRef","useRef","current","measurements","useMemo","accepted","getResultConnectionId","useEffect","subscribe","clear","useCallback","clearResults","exports"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/hooks/use-measurements.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -9,24 +9,20 @@ var _runtimeContext = require("./runtime-context.js");
|
|
|
9
9
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
10
10
|
const useNearbyDevices = () => {
|
|
11
11
|
const runtime = (0, _runtimeContext.useBluetoothRuntime)();
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
const devices = (0, _runtimeContext.useBluetoothSelector)(snapshot => snapshot.devices, (previous, next) => previous.length === next.length && previous.every((item, index) => {
|
|
13
|
+
const candidate = next[index];
|
|
14
|
+
return candidate?.id === item.id && candidate.deviceData === item.deviceData && candidate.status === item.status && candidate.device === item.device;
|
|
15
|
+
}));
|
|
16
|
+
const pair = React.useCallback(async id => {
|
|
17
|
+
const device = runtime.devices.find(item => item.id === id);
|
|
18
|
+
if (device) {
|
|
19
|
+
await device.device.connect();
|
|
20
|
+
}
|
|
21
|
+
return device;
|
|
20
22
|
}, [runtime]);
|
|
21
23
|
return {
|
|
22
|
-
devices
|
|
23
|
-
pair
|
|
24
|
-
const device = runtime.devices.find(item => item.id === id);
|
|
25
|
-
if (device) {
|
|
26
|
-
await device.device.connect();
|
|
27
|
-
}
|
|
28
|
-
return device;
|
|
29
|
-
}
|
|
24
|
+
devices,
|
|
25
|
+
pair
|
|
30
26
|
};
|
|
31
27
|
};
|
|
32
28
|
exports.useNearbyDevices = useNearbyDevices;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","_interopRequireWildcard","require","_runtimeContext","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useNearbyDevices","runtime","useBluetoothRuntime","
|
|
1
|
+
{"version":3,"names":["React","_interopRequireWildcard","require","_runtimeContext","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useNearbyDevices","runtime","useBluetoothRuntime","devices","useBluetoothSelector","snapshot","previous","next","length","every","item","index","candidate","id","deviceData","status","device","pair","useCallback","find","connect","exports"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/hooks/use-nearby-devices.ts"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AAIA,IAAAC,eAAA,GAAAD,OAAA;AAI2B,SAAAD,wBAAAG,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAL,uBAAA,YAAAA,CAAAG,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAEpB,MAAMkB,gBAAgB,GAAGA,CAAA,KAG3B;EACH,MAAMC,OAAO,GAAG,IAAAC,mCAAmB,EAAC,CAAC;EAErC,MAAMC,OAAO,GAAG,IAAAC,oCAAoB,EACjCC,QAAQ,IAAKA,QAAQ,CAACF,OAAO,EAC9B,CAACG,QAAQ,EAAEC,IAAI,KAAKD,QAAQ,CAACE,MAAM,KAAKD,IAAI,CAACC,MAAM,IAAIF,QAAQ,CAACG,KAAK,CAAC,CAACC,IAAI,EAAEC,KAAK,KAAK;IACrF,MAAMC,SAAS,GAAGL,IAAI,CAACI,KAAK,CAAC;IAE7B,OAAOC,SAAS,EAAEC,EAAE,KAAKH,IAAI,CAACG,EAAE,IAC9BD,SAAS,CAACE,UAAU,KAAKJ,IAAI,CAACI,UAAU,IACxCF,SAAS,CAACG,MAAM,KAAKL,IAAI,CAACK,MAAM,IAChCH,SAAS,CAACI,MAAM,KAAKN,IAAI,CAACM,MAAM;EACpC,CAAC,CACH,CAAC;EAED,MAAMC,IAAI,GAAGxC,KAAK,CAACyC,WAAW,CAAC,MAAOL,EAAU,IAAK;IACnD,MAAMG,MAAM,GAAGf,OAAO,CAACE,OAAO,CAACgB,IAAI,CAAET,IAAI,IAAKA,IAAI,CAACG,EAAE,KAAKA,EAAE,CAAC;IAE7D,IAAIG,MAAM,EAAE;MACV,MAAMA,MAAM,CAACA,MAAM,CAACI,OAAO,CAAC,CAAC;IAC/B;IAEA,OAAOJ,MAAM;EACf,CAAC,EAAE,CAACf,OAAO,CAAC,CAAC;EAEb,OAAO;IACLE,OAAO;IACPc;EACF,CAAC;AACH,CAAC;AAACI,OAAA,CAAArB,gBAAA,GAAAA,gBAAA","ignoreList":[]}
|
|
@@ -17,12 +17,17 @@ const usePairedDevices = ({
|
|
|
17
17
|
const runtime = (0, _runtimeContext.useBluetoothRuntime)();
|
|
18
18
|
const [paired, setPaired] = React.useState(() => runtime.getPairedDeviceIds(storageKey) ?? []);
|
|
19
19
|
const pairedRef = React.useRef(paired);
|
|
20
|
+
const autoConnectedRef = React.useRef(new Set());
|
|
21
|
+
const storageRef = React.useRef(storage);
|
|
22
|
+
const autoPairRef = React.useRef(autoPair);
|
|
23
|
+
storageRef.current = storage;
|
|
24
|
+
autoPairRef.current = autoPair;
|
|
20
25
|
const save = React.useCallback(async next => {
|
|
21
26
|
pairedRef.current = next;
|
|
22
27
|
setPaired(next);
|
|
23
28
|
runtime.setPairedDeviceIds(storageKey, next);
|
|
24
|
-
await
|
|
25
|
-
}, [runtime,
|
|
29
|
+
await storageRef.current.setItem(storageKey, JSON.stringify(next));
|
|
30
|
+
}, [runtime, storageKey]);
|
|
26
31
|
React.useEffect(() => runtime.subscribe("pairedDevices", event => {
|
|
27
32
|
if (event.storageKey !== storageKey) {
|
|
28
33
|
return;
|
|
@@ -45,22 +50,36 @@ const usePairedDevices = ({
|
|
|
45
50
|
setPaired(next);
|
|
46
51
|
});
|
|
47
52
|
}, [runtime, storage, storageKey]);
|
|
53
|
+
const connectIfPaired = React.useCallback(device => {
|
|
54
|
+
if (!autoPairRef.current || !pairedRef.current.includes(device.id) || autoConnectedRef.current.has(device.id)) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
autoConnectedRef.current.add(device.id);
|
|
58
|
+
void device.device.connect().catch(() => {
|
|
59
|
+
autoConnectedRef.current.delete(device.id);
|
|
60
|
+
});
|
|
61
|
+
}, []);
|
|
48
62
|
React.useEffect(() => {
|
|
49
63
|
if (!autoPair) {
|
|
64
|
+
autoConnectedRef.current.clear();
|
|
50
65
|
return;
|
|
51
66
|
}
|
|
52
|
-
runtime.devices.
|
|
53
|
-
|
|
67
|
+
runtime.devices.forEach(connectIfPaired);
|
|
68
|
+
return runtime.subscribe("deviceFound", connectIfPaired);
|
|
69
|
+
}, [autoPair, connectIfPaired, paired, runtime]);
|
|
70
|
+
const pair = React.useCallback(device => save([...new Set([...pairedRef.current, device.id])]), [save]);
|
|
71
|
+
const forget = React.useCallback(async id => {
|
|
72
|
+
if (!runtime.manager) {
|
|
73
|
+
throw new Error("Bluetooth manager is not ready; try forgetting the device again.");
|
|
74
|
+
}
|
|
75
|
+
await runtime.manager.forget(id);
|
|
76
|
+
autoConnectedRef.current.delete(id);
|
|
77
|
+
await save(pairedRef.current.filter(candidate => candidate !== id));
|
|
78
|
+
}, [runtime, save]);
|
|
54
79
|
return {
|
|
55
80
|
paired,
|
|
56
|
-
pair
|
|
57
|
-
forget
|
|
58
|
-
if (!runtime.manager) {
|
|
59
|
-
throw new Error("Bluetooth manager is not ready; try forgetting the device again.");
|
|
60
|
-
}
|
|
61
|
-
await runtime.manager.forget(id);
|
|
62
|
-
await save(pairedRef.current.filter(candidate => candidate !== id));
|
|
63
|
-
}
|
|
81
|
+
pair,
|
|
82
|
+
forget
|
|
64
83
|
};
|
|
65
84
|
};
|
|
66
85
|
exports.usePairedDevices = usePairedDevices;
|