@mentra/engine 0.1.0-dev.0 → 3.1.0-dev.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +55 -18
- package/build/bluetooth-sdk/debug.d.ts +2 -0
- package/build/bluetooth-sdk/debug.d.ts.map +1 -0
- package/build/bluetooth-sdk/debug.js +2 -0
- package/build/bluetooth-sdk/debug.js.map +1 -0
- package/build/bluetooth-sdk/index.d.ts +3 -0
- package/build/bluetooth-sdk/index.d.ts.map +1 -0
- package/build/bluetooth-sdk/index.js +3 -0
- package/build/bluetooth-sdk/index.js.map +1 -0
- package/build/bluetooth-sdk/photo-receiver.d.ts +3 -0
- package/build/bluetooth-sdk/photo-receiver.d.ts.map +1 -0
- package/build/bluetooth-sdk/photo-receiver.js +3 -0
- package/build/bluetooth-sdk/photo-receiver.js.map +1 -0
- package/build/bluetooth-sdk/react.d.ts +2 -0
- package/build/bluetooth-sdk/react.d.ts.map +1 -0
- package/build/bluetooth-sdk/react.js +2 -0
- package/build/bluetooth-sdk/react.js.map +1 -0
- package/build/bluetooth-sdk/types.d.ts +2 -0
- package/build/bluetooth-sdk/types.d.ts.map +1 -0
- package/build/bluetooth-sdk/types.js +2 -0
- package/build/bluetooth-sdk/types.js.map +1 -0
- package/build/engine.d.ts +24 -16
- package/build/engine.d.ts.map +1 -1
- package/build/engine.js +9 -4
- package/build/engine.js.map +1 -1
- package/build/facades/dev.d.ts +3 -2
- package/build/facades/dev.d.ts.map +1 -1
- package/build/facades/dev.js +18 -12
- package/build/facades/dev.js.map +1 -1
- package/build/facades/display.d.ts +1 -1
- package/build/facades/display.d.ts.map +1 -1
- package/build/facades/display.js +1 -1
- package/build/facades/display.js.map +1 -1
- package/build/facades/gallery.js +1 -1
- package/build/facades/gallery.js.map +1 -1
- package/build/facades/glasses.d.ts +4 -13
- package/build/facades/glasses.d.ts.map +1 -1
- package/build/facades/glasses.js +21 -6
- package/build/facades/glasses.js.map +1 -1
- package/build/facades/glassesSettings.d.ts.map +1 -1
- package/build/facades/glassesSettings.js +1 -0
- package/build/facades/glassesSettings.js.map +1 -1
- package/build/facades/miniapps.d.ts +4 -0
- package/build/facades/miniapps.d.ts.map +1 -1
- package/build/facades/miniapps.js +5 -0
- package/build/facades/miniapps.js.map +1 -1
- package/build/facades/ota.d.ts +14 -16
- package/build/facades/ota.d.ts.map +1 -1
- package/build/facades/ota.js +22 -7
- package/build/facades/ota.js.map +1 -1
- package/build/facades/pairing.d.ts +8 -5
- package/build/facades/pairing.d.ts.map +1 -1
- package/build/facades/pairing.js +12 -10
- package/build/facades/pairing.js.map +1 -1
- package/build/facades/permissions.d.ts +10 -0
- package/build/facades/permissions.d.ts.map +1 -1
- package/build/facades/permissions.js +10 -0
- package/build/facades/permissions.js.map +1 -1
- package/build/facades/phoneNotifications.d.ts +0 -4
- package/build/facades/phoneNotifications.d.ts.map +1 -1
- package/build/facades/phoneNotifications.js +4 -14
- package/build/facades/phoneNotifications.js.map +1 -1
- package/build/facades/speech.d.ts +7 -6
- package/build/facades/speech.d.ts.map +1 -1
- package/build/facades/speech.js +1 -1
- package/build/facades/speech.js.map +1 -1
- package/build/generated/releaseMetadata.d.ts +12 -0
- package/build/generated/releaseMetadata.d.ts.map +1 -0
- package/build/generated/releaseMetadata.js +10 -0
- package/build/generated/releaseMetadata.js.map +1 -0
- package/build/index.d.ts +10 -8
- package/build/index.d.ts.map +1 -1
- package/build/index.js +6 -5
- package/build/index.js.map +1 -1
- package/build/react/MentraLiveOtaFlow.d.ts +38 -0
- package/build/react/MentraLiveOtaFlow.d.ts.map +1 -0
- package/build/react/MentraLiveOtaFlow.js +528 -0
- package/build/react/MentraLiveOtaFlow.js.map +1 -0
- package/build/react/index.d.ts +2 -0
- package/build/react/index.d.ts.map +1 -0
- package/build/react/index.js +2 -0
- package/build/react/index.js.map +1 -0
- package/build/react/useEngineSnapshot.d.ts +2 -0
- package/build/react/useEngineSnapshot.d.ts.map +1 -0
- package/build/react/useEngineSnapshot.js +14 -0
- package/build/react/useEngineSnapshot.js.map +1 -0
- package/build/runtime/bootstrap.d.ts +24 -1
- package/build/runtime/bootstrap.d.ts.map +1 -1
- package/build/runtime/bootstrap.js +17 -0
- package/build/runtime/bootstrap.js.map +1 -1
- package/build/runtime/scanQrSeam.d.ts +7 -0
- package/build/runtime/scanQrSeam.d.ts.map +1 -0
- package/build/runtime/scanQrSeam.js +16 -0
- package/build/runtime/scanQrSeam.js.map +1 -0
- package/build/services/AppRegistry.d.ts +41 -57
- package/build/services/AppRegistry.d.ts.map +1 -1
- package/build/services/AppRegistry.js +208 -144
- package/build/services/AppRegistry.js.map +1 -1
- package/build/services/AudioCloudUplink.d.ts +12 -0
- package/build/services/AudioCloudUplink.d.ts.map +1 -1
- package/build/services/AudioCloudUplink.js +22 -1
- package/build/services/AudioCloudUplink.js.map +1 -1
- package/build/services/AudioPlaybackService.d.ts +41 -2
- package/build/services/AudioPlaybackService.d.ts.map +1 -1
- package/build/services/AudioPlaybackService.js +250 -33
- package/build/services/AudioPlaybackService.js.map +1 -1
- package/build/services/BlobStore.d.ts +2 -1
- package/build/services/BlobStore.d.ts.map +1 -1
- package/build/services/BlobStore.js +17 -9
- package/build/services/BlobStore.js.map +1 -1
- package/build/services/CloudAudioSubscriptionSync.d.ts.map +1 -1
- package/build/services/CloudAudioSubscriptionSync.js +13 -1
- package/build/services/CloudAudioSubscriptionSync.js.map +1 -1
- package/build/services/CloudClientService.d.ts +15 -0
- package/build/services/CloudClientService.d.ts.map +1 -1
- package/build/services/CloudClientService.js +93 -1
- package/build/services/CloudClientService.js.map +1 -1
- package/build/services/DeviceEventRouter.js +5 -5
- package/build/services/DeviceEventRouter.js.map +1 -1
- package/build/services/ForegroundLocationPermission.d.ts +13 -0
- package/build/services/ForegroundLocationPermission.d.ts.map +1 -0
- package/build/services/ForegroundLocationPermission.js +12 -0
- package/build/services/ForegroundLocationPermission.js.map +1 -0
- package/build/services/GlassesSettingsSync.d.ts.map +1 -1
- package/build/services/GlassesSettingsSync.js +9 -3
- package/build/services/GlassesSettingsSync.js.map +1 -1
- package/build/services/GlassesStatusProjection.d.ts +2 -1
- package/build/services/GlassesStatusProjection.d.ts.map +1 -1
- package/build/services/GlassesStatusProjection.js +15 -8
- package/build/services/GlassesStatusProjection.js.map +1 -1
- package/build/services/HotspotOtaTransport.d.ts +29 -0
- package/build/services/HotspotOtaTransport.d.ts.map +1 -0
- package/build/services/HotspotOtaTransport.js +146 -0
- package/build/services/HotspotOtaTransport.js.map +1 -0
- package/build/services/HotspotShutdown.d.ts +17 -0
- package/build/services/HotspotShutdown.d.ts.map +1 -0
- package/build/services/HotspotShutdown.js +29 -0
- package/build/services/HotspotShutdown.js.map +1 -0
- package/build/services/LocalDisplayManager.d.ts +15 -0
- package/build/services/LocalDisplayManager.d.ts.map +1 -1
- package/build/services/LocalDisplayManager.js +106 -20
- package/build/services/LocalDisplayManager.js.map +1 -1
- package/build/services/LocalMiniappRuntime.d.ts +74 -2
- package/build/services/LocalMiniappRuntime.d.ts.map +1 -1
- package/build/services/LocalMiniappRuntime.js +785 -291
- package/build/services/LocalMiniappRuntime.js.map +1 -1
- package/build/services/LocalMiniappStorage.d.ts +32 -0
- package/build/services/LocalMiniappStorage.d.ts.map +1 -0
- package/build/services/LocalMiniappStorage.js +66 -0
- package/build/services/LocalMiniappStorage.js.map +1 -0
- package/build/services/LocalMiniappUserIdentity.d.ts +20 -0
- package/build/services/LocalMiniappUserIdentity.d.ts.map +1 -0
- package/build/services/LocalMiniappUserIdentity.js +43 -0
- package/build/services/LocalMiniappUserIdentity.js.map +1 -0
- package/build/services/LocalSttFallbackCoordinator.d.ts +9 -6
- package/build/services/LocalSttFallbackCoordinator.d.ts.map +1 -1
- package/build/services/LocalSttFallbackCoordinator.js +18 -12
- package/build/services/LocalSttFallbackCoordinator.js.map +1 -1
- package/build/services/MicStateCoordinator.d.ts +42 -1
- package/build/services/MicStateCoordinator.d.ts.map +1 -1
- package/build/services/MicStateCoordinator.js +141 -3
- package/build/services/MicStateCoordinator.js.map +1 -1
- package/build/services/MiniappLauncher.d.ts.map +1 -1
- package/build/services/MiniappLauncher.js +23 -3
- package/build/services/MiniappLauncher.js.map +1 -1
- package/build/services/MiniappLiveness.d.ts +12 -0
- package/build/services/MiniappLiveness.d.ts.map +1 -0
- package/build/services/MiniappLiveness.js +16 -0
- package/build/services/MiniappLiveness.js.map +1 -0
- package/build/services/NativeHttpResponse.d.ts +3 -0
- package/build/services/NativeHttpResponse.d.ts.map +1 -0
- package/build/services/NativeHttpResponse.js +6 -0
- package/build/services/NativeHttpResponse.js.map +1 -0
- package/build/services/OtaArtifactDownloader.d.ts +65 -0
- package/build/services/OtaArtifactDownloader.d.ts.map +1 -0
- package/build/services/OtaArtifactDownloader.js +226 -0
- package/build/services/OtaArtifactDownloader.js.map +1 -0
- package/build/services/OtaAutoChain.d.ts +34 -0
- package/build/services/OtaAutoChain.d.ts.map +1 -0
- package/build/services/OtaAutoChain.js +83 -0
- package/build/services/OtaAutoChain.js.map +1 -0
- package/build/services/OtaErrorMapping.d.ts +18 -0
- package/build/services/OtaErrorMapping.d.ts.map +1 -0
- package/build/services/OtaErrorMapping.js +63 -0
- package/build/services/OtaErrorMapping.js.map +1 -0
- package/build/services/OtaInstallCoordinator.d.ts +95 -15
- package/build/services/OtaInstallCoordinator.d.ts.map +1 -1
- package/build/services/OtaInstallCoordinator.js +577 -130
- package/build/services/OtaInstallCoordinator.js.map +1 -1
- package/build/services/OtaService.d.ts.map +1 -1
- package/build/services/OtaService.js +8 -1
- package/build/services/OtaService.js.map +1 -1
- package/build/services/OtaUpdateCheckService.d.ts +39 -4
- package/build/services/OtaUpdateCheckService.d.ts.map +1 -1
- package/build/services/OtaUpdateCheckService.js +138 -22
- package/build/services/OtaUpdateCheckService.js.map +1 -1
- package/build/services/PhoneCalendarHelpers.d.ts +32 -0
- package/build/services/PhoneCalendarHelpers.d.ts.map +1 -0
- package/build/services/PhoneCalendarHelpers.js +157 -0
- package/build/services/PhoneCalendarHelpers.js.map +1 -0
- package/build/services/PhoneCalendarService.d.ts +5 -0
- package/build/services/PhoneCalendarService.d.ts.map +1 -0
- package/build/services/PhoneCalendarService.js +45 -0
- package/build/services/PhoneCalendarService.js.map +1 -0
- package/build/services/PhoneCameraFovCoordinator.d.ts +30 -0
- package/build/services/PhoneCameraFovCoordinator.d.ts.map +1 -0
- package/build/services/PhoneCameraFovCoordinator.js +194 -0
- package/build/services/PhoneCameraFovCoordinator.js.map +1 -0
- package/build/services/PhoneNotificationsSync.d.ts.map +1 -1
- package/build/services/PhoneNotificationsSync.js +12 -10
- package/build/services/PhoneNotificationsSync.js.map +1 -1
- package/build/services/PhonePhotoCoordinator.d.ts +26 -2
- package/build/services/PhonePhotoCoordinator.d.ts.map +1 -1
- package/build/services/PhonePhotoCoordinator.js +79 -9
- package/build/services/PhonePhotoCoordinator.js.map +1 -1
- package/build/services/PhoneStreamCoordinator.d.ts +8 -1
- package/build/services/PhoneStreamCoordinator.d.ts.map +1 -1
- package/build/services/PhoneStreamCoordinator.js +125 -13
- package/build/services/PhoneStreamCoordinator.js.map +1 -1
- package/build/services/PhoneVideoCoordinator.d.ts +2 -0
- package/build/services/PhoneVideoCoordinator.d.ts.map +1 -1
- package/build/services/PhoneVideoCoordinator.js +10 -0
- package/build/services/PhoneVideoCoordinator.js.map +1 -1
- package/build/services/SceneRenderer.d.ts.map +1 -1
- package/build/services/SceneRenderer.js +15 -0
- package/build/services/SceneRenderer.js.map +1 -1
- package/build/services/SentenceTtsPipeline.d.ts +31 -0
- package/build/services/SentenceTtsPipeline.d.ts.map +1 -0
- package/build/services/SentenceTtsPipeline.js +67 -0
- package/build/services/SentenceTtsPipeline.js.map +1 -0
- package/build/services/SupportProfileSync.d.ts +22 -0
- package/build/services/SupportProfileSync.d.ts.map +1 -0
- package/build/services/SupportProfileSync.js +213 -0
- package/build/services/SupportProfileSync.js.map +1 -0
- package/build/services/TranscriptionRouting.d.ts +12 -0
- package/build/services/TranscriptionRouting.d.ts.map +1 -0
- package/build/services/TranscriptionRouting.js +24 -0
- package/build/services/TranscriptionRouting.js.map +1 -0
- package/build/services/TtsTextSanitizer.d.ts +5 -0
- package/build/services/TtsTextSanitizer.d.ts.map +1 -0
- package/build/services/TtsTextSanitizer.js +61 -0
- package/build/services/TtsTextSanitizer.js.map +1 -0
- package/build/services/WifiAdbRequest.d.ts +17 -0
- package/build/services/WifiAdbRequest.d.ts.map +1 -0
- package/build/services/WifiAdbRequest.js +35 -0
- package/build/services/WifiAdbRequest.js.map +1 -0
- package/build/services/asg/asgCameraApi.d.ts +43 -0
- package/build/services/asg/asgCameraApi.d.ts.map +1 -1
- package/build/services/asg/asgCameraApi.js +509 -26
- package/build/services/asg/asgCameraApi.js.map +1 -1
- package/build/services/asg/cameraRollExportCoordinator.d.ts +60 -0
- package/build/services/asg/cameraRollExportCoordinator.d.ts.map +1 -0
- package/build/services/asg/cameraRollExportCoordinator.js +618 -0
- package/build/services/asg/cameraRollExportCoordinator.js.map +1 -0
- package/build/services/asg/cameraRollExportLedger.d.ts +44 -0
- package/build/services/asg/cameraRollExportLedger.d.ts.map +1 -0
- package/build/services/asg/cameraRollExportLedger.js +78 -0
- package/build/services/asg/cameraRollExportLedger.js.map +1 -0
- package/build/services/asg/galleryNotices.d.ts +1 -1
- package/build/services/asg/galleryNotices.d.ts.map +1 -1
- package/build/services/asg/galleryNotices.js.map +1 -1
- package/build/services/asg/galleryPathMigration.d.ts +3 -0
- package/build/services/asg/galleryPathMigration.d.ts.map +1 -0
- package/build/services/asg/galleryPathMigration.js +26 -0
- package/build/services/asg/galleryPathMigration.js.map +1 -0
- package/build/services/asg/gallerySettingsService.d.ts +1 -0
- package/build/services/asg/gallerySettingsService.d.ts.map +1 -1
- package/build/services/asg/gallerySettingsService.js +2 -0
- package/build/services/asg/gallerySettingsService.js.map +1 -1
- package/build/services/asg/gallerySyncService.d.ts.map +1 -1
- package/build/services/asg/gallerySyncService.js +162 -56
- package/build/services/asg/gallerySyncService.js.map +1 -1
- package/build/services/asg/galleryTransferLedger.d.ts +58 -0
- package/build/services/asg/galleryTransferLedger.d.ts.map +1 -0
- package/build/services/asg/galleryTransferLedger.js +225 -0
- package/build/services/asg/galleryTransferLedger.js.map +1 -0
- package/build/services/asg/localNetworkTransport.d.ts +15 -0
- package/build/services/asg/localNetworkTransport.d.ts.map +1 -0
- package/build/services/asg/localNetworkTransport.js +144 -0
- package/build/services/asg/localNetworkTransport.js.map +1 -0
- package/build/services/asg/localStorageService.d.ts +18 -0
- package/build/services/asg/localStorageService.d.ts.map +1 -1
- package/build/services/asg/localStorageService.js +168 -19
- package/build/services/asg/localStorageService.js.map +1 -1
- package/build/services/asg/mediaProcessingQueue.d.ts +10 -0
- package/build/services/asg/mediaProcessingQueue.d.ts.map +1 -1
- package/build/services/asg/mediaProcessingQueue.js +193 -62
- package/build/services/asg/mediaProcessingQueue.js.map +1 -1
- package/build/services/audioPlaybackAssets.d.ts +8 -0
- package/build/services/audioPlaybackAssets.d.ts.map +1 -0
- package/build/services/audioPlaybackAssets.js +7 -0
- package/build/services/audioPlaybackAssets.js.map +1 -0
- package/build/services/gallerySyncClock.js +1 -1
- package/build/services/gallerySyncClock.js.map +1 -1
- package/build/services/glassesClockSync.d.ts.map +1 -1
- package/build/services/glassesClockSync.js +6 -2
- package/build/services/glassesClockSync.js.map +1 -1
- package/build/services/manifestActions.d.ts +7 -0
- package/build/services/manifestActions.d.ts.map +1 -0
- package/build/services/manifestActions.js +25 -0
- package/build/services/manifestActions.js.map +1 -0
- package/build/services/otaDisplayState.d.ts +23 -12
- package/build/services/otaDisplayState.d.ts.map +1 -1
- package/build/services/otaDisplayState.js +36 -14
- package/build/services/otaDisplayState.js.map +1 -1
- package/build/services/otaInstallPolicy.d.ts +16 -4
- package/build/services/otaInstallPolicy.d.ts.map +1 -1
- package/build/services/otaInstallPolicy.js +24 -3
- package/build/services/otaInstallPolicy.js.map +1 -1
- package/build/services/otaLegacyMapping.d.ts +1 -1
- package/build/services/otaLegacyMapping.d.ts.map +1 -1
- package/build/services/otaLegacyMapping.js.map +1 -1
- package/build/services/otaManifestPolicy.d.ts +14 -0
- package/build/services/otaManifestPolicy.d.ts.map +1 -0
- package/build/services/otaManifestPolicy.js +19 -0
- package/build/services/otaManifestPolicy.js.map +1 -0
- package/build/services/otaManifestUrl.d.ts +3 -0
- package/build/services/otaManifestUrl.d.ts.map +1 -0
- package/build/services/otaManifestUrl.js +38 -0
- package/build/services/otaManifestUrl.js.map +1 -0
- package/build/services/slimStreamStatus.d.ts +11 -0
- package/build/services/slimStreamStatus.d.ts.map +1 -1
- package/build/services/slimStreamStatus.js +14 -4
- package/build/services/slimStreamStatus.js.map +1 -1
- package/build/stores/apps.d.ts.map +1 -1
- package/build/stores/apps.js +11 -0
- package/build/stores/apps.js.map +1 -1
- package/build/stores/bluetoothSettingKeys.d.ts.map +1 -1
- package/build/stores/bluetoothSettingKeys.js +2 -0
- package/build/stores/bluetoothSettingKeys.js.map +1 -1
- package/build/stores/gallerySync.d.ts +2 -0
- package/build/stores/gallerySync.d.ts.map +1 -1
- package/build/stores/gallerySync.js +2 -0
- package/build/stores/gallerySync.js.map +1 -1
- package/build/stores/glasses.d.ts.map +1 -1
- package/build/stores/glasses.js +3 -0
- package/build/stores/glasses.js.map +1 -1
- package/build/stores/settings.d.ts +17 -0
- package/build/stores/settings.d.ts.map +1 -1
- package/build/stores/settings.js +157 -17
- package/build/stores/settings.js.map +1 -1
- package/build/types/applet.d.ts +2 -0
- package/build/types/applet.d.ts.map +1 -1
- package/build/types/applet.js.map +1 -1
- package/build/types/asg.d.ts +7 -0
- package/build/types/asg.d.ts.map +1 -1
- package/build/types/asg.js.map +1 -1
- package/build/types/enums.d.ts +2 -25
- package/build/types/enums.d.ts.map +1 -1
- package/build/types/enums.js +2 -27
- package/build/types/enums.js.map +1 -1
- package/build/types/hardware.d.ts +4 -13
- package/build/types/hardware.d.ts.map +1 -1
- package/build/types/hardware.js +15 -3
- package/build/types/hardware.js.map +1 -1
- package/build/types/index.d.ts +2 -6
- package/build/types/index.d.ts.map +1 -1
- package/build/types/index.js +2 -6
- package/build/types/index.js.map +1 -1
- package/build/utils/configuredDevHost.d.ts +6 -0
- package/build/utils/configuredDevHost.d.ts.map +1 -0
- package/build/utils/configuredDevHost.js +19 -0
- package/build/utils/configuredDevHost.js.map +1 -0
- package/build/utils/devMiniappLaunch.d.ts +19 -8
- package/build/utils/devMiniappLaunch.d.ts.map +1 -1
- package/build/utils/devMiniappLaunch.js +144 -21
- package/build/utils/devMiniappLaunch.js.map +1 -1
- package/build/utils/diagnosticContext.d.ts.map +1 -1
- package/build/utils/diagnosticContext.js +15 -17
- package/build/utils/diagnosticContext.js.map +1 -1
- package/build/utils/hardware/hardware.d.ts.map +1 -1
- package/build/utils/hardware/hardware.js +7 -3
- package/build/utils/hardware/hardware.js.map +1 -1
- package/build/utils/miniappDiagnostics.d.ts +64 -0
- package/build/utils/miniappDiagnostics.d.ts.map +1 -0
- package/build/utils/miniappDiagnostics.js +173 -0
- package/build/utils/miniappDiagnostics.js.map +1 -0
- package/build/utils/permissions/MediaLibraryPermissions.d.ts +11 -0
- package/build/utils/permissions/MediaLibraryPermissions.d.ts.map +1 -1
- package/build/utils/permissions/MediaLibraryPermissions.js +27 -4
- package/build/utils/permissions/MediaLibraryPermissions.js.map +1 -1
- package/build/utils/timers/timers.d.ts.map +1 -1
- package/build/utils/timers/timers.js +55 -18
- package/build/utils/timers/timers.js.map +1 -1
- package/package.json +59 -31
- package/src/assets/silence.wav +0 -0
- package/src/bluetooth-sdk/debug.ts +1 -0
- package/src/bluetooth-sdk/index.ts +2 -0
- package/src/bluetooth-sdk/photo-receiver.ts +2 -0
- package/src/bluetooth-sdk/react.ts +1 -0
- package/src/bluetooth-sdk/types.ts +1 -0
- package/src/engine.ts +9 -4
- package/src/facades/dev.ts +17 -12
- package/src/facades/display.ts +1 -1
- package/src/facades/gallery.ts +1 -1
- package/src/facades/glasses.ts +20 -7
- package/src/facades/glassesSettings.ts +5 -0
- package/src/facades/miniapps.ts +7 -0
- package/src/facades/ota.ts +23 -8
- package/src/facades/pairing.ts +15 -11
- package/src/facades/permissions.ts +14 -0
- package/src/facades/phoneNotifications.ts +4 -13
- package/src/facades/speech.ts +21 -7
- package/src/generated/releaseMetadata.ts +20 -0
- package/src/index.ts +39 -13
- package/src/react/MentraLiveOtaFlow.tsx +856 -0
- package/src/react/index.ts +7 -0
- package/src/react/useEngineSnapshot.ts +16 -0
- package/src/runtime/bootstrap.ts +33 -1
- package/src/runtime/scanQrSeam.ts +20 -0
- package/src/services/AppRegistry.ts +240 -149
- package/src/services/AudioCloudUplink.ts +23 -1
- package/src/services/AudioPlaybackService.ts +287 -38
- package/src/services/BlobStore.ts +22 -9
- package/src/services/CloudAudioSubscriptionSync.ts +13 -1
- package/src/services/CloudClientService.ts +96 -1
- package/src/services/DeviceEventRouter.ts +5 -5
- package/src/services/ForegroundLocationPermission.ts +24 -0
- package/src/services/GlassesSettingsSync.ts +9 -3
- package/src/services/GlassesStatusProjection.ts +16 -8
- package/src/services/HotspotOtaTransport.ts +184 -0
- package/src/services/HotspotShutdown.ts +41 -0
- package/src/services/LocalDisplayManager.ts +112 -21
- package/src/services/LocalMiniappRuntime.ts +967 -346
- package/src/services/LocalMiniappStorage.ts +82 -0
- package/src/services/LocalMiniappUserIdentity.ts +46 -0
- package/src/services/LocalSttFallbackCoordinator.ts +19 -12
- package/src/services/MicStateCoordinator.ts +169 -4
- package/src/services/MiniappLauncher.ts +30 -3
- package/src/services/MiniappLiveness.ts +24 -0
- package/src/services/NativeHttpResponse.ts +6 -0
- package/src/services/OtaArtifactDownloader.ts +312 -0
- package/src/services/OtaAutoChain.ts +106 -0
- package/src/services/OtaErrorMapping.ts +80 -0
- package/src/services/OtaInstallCoordinator.ts +649 -144
- package/src/services/OtaService.ts +11 -5
- package/src/services/OtaUpdateCheckService.ts +181 -21
- package/src/services/PhoneCalendarHelpers.ts +212 -0
- package/src/services/PhoneCalendarService.ts +65 -0
- package/src/services/PhoneCameraFovCoordinator.ts +210 -0
- package/src/services/PhoneNotificationsSync.ts +12 -10
- package/src/services/PhonePhotoCoordinator.ts +116 -18
- package/src/services/PhoneStreamCoordinator.ts +139 -25
- package/src/services/PhoneVideoCoordinator.ts +11 -0
- package/src/services/SceneRenderer.ts +16 -0
- package/src/services/SentenceTtsPipeline.ts +106 -0
- package/src/services/SupportProfileSync.ts +218 -0
- package/src/services/TranscriptionRouting.ts +37 -0
- package/src/services/TtsTextSanitizer.ts +66 -0
- package/src/services/WifiAdbRequest.ts +53 -0
- package/src/services/asg/asgCameraApi.ts +615 -33
- package/src/services/asg/cameraRollExportCoordinator.ts +627 -0
- package/src/services/asg/cameraRollExportLedger.ts +122 -0
- package/src/services/asg/galleryNotices.ts +1 -0
- package/src/services/asg/galleryPathMigration.ts +22 -0
- package/src/services/asg/gallerySettingsService.ts +3 -0
- package/src/services/asg/gallerySyncService.ts +184 -73
- package/src/services/asg/galleryTransferLedger.ts +312 -0
- package/src/services/asg/localNetworkTransport.ts +169 -0
- package/src/services/asg/localStorageService.ts +179 -24
- package/src/services/asg/mediaProcessingQueue.ts +209 -62
- package/src/services/audioPlaybackAssets.ts +8 -0
- package/src/services/gallerySyncClock.ts +1 -1
- package/src/services/glassesClockSync.ts +6 -2
- package/src/services/manifestActions.ts +30 -0
- package/src/services/otaDisplayState.ts +58 -17
- package/src/services/otaInstallPolicy.ts +30 -4
- package/src/services/otaLegacyMapping.ts +1 -1
- package/src/services/otaManifestPolicy.ts +42 -0
- package/src/services/otaManifestUrl.ts +44 -0
- package/src/services/slimStreamStatus.ts +16 -5
- package/src/stores/apps.ts +12 -0
- package/src/stores/bluetoothSettingKeys.ts +2 -0
- package/src/stores/gallerySync.ts +4 -0
- package/src/stores/glasses.ts +3 -0
- package/src/stores/settings.ts +179 -18
- package/src/types/applet.ts +2 -0
- package/src/types/asg.ts +7 -0
- package/src/types/enums.ts +3 -28
- package/src/types/hardware.ts +20 -13
- package/src/types/index.ts +2 -6
- package/src/utils/configuredDevHost.ts +17 -0
- package/src/utils/devMiniappLaunch.ts +151 -23
- package/src/utils/diagnosticContext.ts +17 -17
- package/src/utils/hardware/hardware.ts +7 -9
- package/src/utils/miniappDiagnostics.ts +226 -0
- package/src/utils/permissions/MediaLibraryPermissions.ts +35 -4
- package/src/utils/timers/timers.ts +57 -21
- package/build/devtools.d.ts +0 -11
- package/build/devtools.d.ts.map +0 -1
- package/build/devtools.js +0 -13
- package/build/devtools.js.map +0 -1
- package/build/internal.d.ts +0 -66
- package/build/internal.d.ts.map +0 -1
- package/build/internal.js +0 -89
- package/build/internal.js.map +0 -1
- package/build/services/asgOtaVersionUrl.d.ts +0 -2
- package/build/services/asgOtaVersionUrl.d.ts.map +0 -1
- package/build/services/asgOtaVersionUrl.js +0 -36
- package/build/services/asgOtaVersionUrl.js.map +0 -1
- package/src/devtools.ts +0 -13
- package/src/internal.ts +0 -158
- package/src/services/asgOtaVersionUrl.ts +0 -41
|
@@ -8,6 +8,8 @@ import * as RNFS from "@dr.pogodin/react-native-fs"
|
|
|
8
8
|
import {PhotoInfo} from "../../types/asg"
|
|
9
9
|
import {BgTimer} from "../../utils/timers"
|
|
10
10
|
import {storage, StorageValueNotFoundError} from "../../utils/storage"
|
|
11
|
+
import {galleryTransferLedger, GalleryAssetReceipt} from "./galleryTransferLedger"
|
|
12
|
+
import {toPortableGalleryPath} from "./galleryPathMigration"
|
|
11
13
|
|
|
12
14
|
export interface DownloadedFile {
|
|
13
15
|
name: string
|
|
@@ -21,6 +23,7 @@ export interface DownloadedFile {
|
|
|
21
23
|
glassesModel?: string // Model of glasses that captured this media
|
|
22
24
|
duration?: number // Video duration in milliseconds
|
|
23
25
|
capture_id?: string // Capture folder name (when synced via capture-aware pipeline)
|
|
26
|
+
assetReceipt?: GalleryAssetReceipt
|
|
24
27
|
}
|
|
25
28
|
|
|
26
29
|
interface SyncState {
|
|
@@ -47,6 +50,7 @@ export class LocalStorageService {
|
|
|
47
50
|
private readonly SYNC_STATE_KEY = "asg_sync_state"
|
|
48
51
|
private readonly CLIENT_ID_KEY = "asg_client_id"
|
|
49
52
|
private readonly SYNC_QUEUE_KEY = "asg_sync_queue"
|
|
53
|
+
private readonly QUARANTINED_FILES_KEY = "asg_quarantined_downloaded_files_v1"
|
|
50
54
|
private readonly ASG_PHOTOS_DIR = `${RNFS.DocumentDirectoryPath}/MentraPhotos`
|
|
51
55
|
private readonly ASG_THUMBNAILS_DIR = `${RNFS.DocumentDirectoryPath}/MentraPhotos/thumbnails`
|
|
52
56
|
|
|
@@ -157,7 +161,22 @@ export class LocalStorageService {
|
|
|
157
161
|
*/
|
|
158
162
|
async saveDownloadedFile(file: DownloadedFile): Promise<void> {
|
|
159
163
|
try {
|
|
160
|
-
const
|
|
164
|
+
const rawFiles = this.loadRawDownloadedFiles()
|
|
165
|
+
const files: Record<string, DownloadedFile> = {}
|
|
166
|
+
const quarantined = this.loadQuarantinedFiles()
|
|
167
|
+
const missingCaptureIds: string[] = []
|
|
168
|
+
for (const [name, existing] of Object.entries(rawFiles)) {
|
|
169
|
+
const existingPath = this.toPortableRelativePath(existing.filePath)
|
|
170
|
+
const existingThumbnail = existing.thumbnailPath
|
|
171
|
+
? this.toPortableRelativePath(existing.thumbnailPath) || undefined
|
|
172
|
+
: undefined
|
|
173
|
+
if (!existingPath) {
|
|
174
|
+
quarantined[name] = existing
|
|
175
|
+
missingCaptureIds.push(name)
|
|
176
|
+
continue
|
|
177
|
+
}
|
|
178
|
+
files[name] = {...existing, filePath: existingPath, thumbnailPath: existingThumbnail}
|
|
179
|
+
}
|
|
161
180
|
|
|
162
181
|
// 🔍 DIAGNOSTIC: Check if file already exists
|
|
163
182
|
// const existingFile = files[file.name]
|
|
@@ -180,23 +199,28 @@ export class LocalStorageService {
|
|
|
180
199
|
|
|
181
200
|
// Store relative paths to handle iOS app container changes between launches
|
|
182
201
|
// Convert absolute paths to relative (remove DocumentDirectoryPath prefix)
|
|
183
|
-
const
|
|
184
|
-
const relativePath = file.filePath.startsWith(docPath)
|
|
185
|
-
? file.filePath.substring(docPath.length + 1) // +1 for the slash
|
|
186
|
-
: file.filePath
|
|
202
|
+
const relativePath = this.toPortableRelativePath(file.filePath)
|
|
187
203
|
const relativeThumbnailPath = file.thumbnailPath
|
|
188
|
-
? file.thumbnailPath
|
|
189
|
-
? file.thumbnailPath.substring(docPath.length + 1)
|
|
190
|
-
: file.thumbnailPath
|
|
204
|
+
? this.toPortableRelativePath(file.thumbnailPath) || undefined
|
|
191
205
|
: undefined
|
|
192
206
|
|
|
207
|
+
if (!relativePath) {
|
|
208
|
+
throw new Error(`Cannot persist non-portable gallery path: ${file.filePath}`)
|
|
209
|
+
}
|
|
210
|
+
|
|
193
211
|
files[file.name] = {
|
|
194
212
|
...file,
|
|
195
213
|
// Store relative paths instead of absolute
|
|
196
214
|
filePath: relativePath,
|
|
197
215
|
thumbnailPath: relativeThumbnailPath,
|
|
198
216
|
}
|
|
199
|
-
|
|
217
|
+
const saveResult = storage.save(this.DOWNLOADED_FILES_KEY, files)
|
|
218
|
+
if (saveResult.is_error()) throw saveResult.error
|
|
219
|
+
const quarantineResult = storage.save(this.QUARANTINED_FILES_KEY, quarantined)
|
|
220
|
+
if (quarantineResult.is_error()) throw quarantineResult.error
|
|
221
|
+
for (const captureId of missingCaptureIds) {
|
|
222
|
+
galleryTransferLedger.releaseMissingLocalCommit(captureId, true)
|
|
223
|
+
}
|
|
200
224
|
// console.log(`[LocalStorage] 💾 Saved metadata for ${file.name} with relative path: ${relativePath}`)
|
|
201
225
|
} catch (error) {
|
|
202
226
|
console.error("Error saving downloaded file metadata:", error)
|
|
@@ -218,31 +242,118 @@ export class LocalStorageService {
|
|
|
218
242
|
|
|
219
243
|
const files = res.value
|
|
220
244
|
const reconstructedFiles: Record<string, DownloadedFile> = {}
|
|
221
|
-
const
|
|
245
|
+
const normalizedFiles: Record<string, DownloadedFile> = {}
|
|
246
|
+
const quarantined = this.loadQuarantinedFiles()
|
|
247
|
+
const missingCaptureIds: string[] = []
|
|
248
|
+
let didMigrate = false
|
|
222
249
|
|
|
223
|
-
//
|
|
250
|
+
// Normalize every record before saving. This fixes the old read-absolute/write-one-relative
|
|
251
|
+
// bug and migrates stale iOS container UUID paths via their Documents/MentraPhotos suffix.
|
|
224
252
|
for (const [name, file] of Object.entries(files as Record<string, DownloadedFile>)) {
|
|
225
|
-
|
|
226
|
-
const
|
|
227
|
-
? file.
|
|
228
|
-
:
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
253
|
+
const relativePath = this.toPortableRelativePath(file.filePath)
|
|
254
|
+
const relativeThumbnailPath = file.thumbnailPath
|
|
255
|
+
? this.toPortableRelativePath(file.thumbnailPath) || undefined
|
|
256
|
+
: undefined
|
|
257
|
+
if (!relativePath) {
|
|
258
|
+
quarantined[name] = {...file, downloaded_at: file.downloaded_at || Date.now()}
|
|
259
|
+
missingCaptureIds.push(name)
|
|
260
|
+
didMigrate = true
|
|
261
|
+
continue
|
|
262
|
+
}
|
|
263
|
+
const absolutePath = `${RNFS.DocumentDirectoryPath}/${relativePath}`
|
|
264
|
+
const absoluteThumbnailPath = relativeThumbnailPath
|
|
265
|
+
? `${RNFS.DocumentDirectoryPath}/${relativeThumbnailPath}`
|
|
234
266
|
: undefined
|
|
235
267
|
|
|
268
|
+
normalizedFiles[name] = {
|
|
269
|
+
...file,
|
|
270
|
+
filePath: relativePath,
|
|
271
|
+
thumbnailPath: relativeThumbnailPath,
|
|
272
|
+
}
|
|
273
|
+
|
|
236
274
|
reconstructedFiles[name] = {
|
|
237
275
|
...file,
|
|
238
276
|
filePath: absolutePath,
|
|
239
277
|
thumbnailPath: absoluteThumbnailPath,
|
|
240
278
|
}
|
|
279
|
+
if (file.filePath !== relativePath || file.thumbnailPath !== relativeThumbnailPath) didMigrate = true
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
if (didMigrate) {
|
|
283
|
+
const saveResult = storage.save(this.DOWNLOADED_FILES_KEY, normalizedFiles)
|
|
284
|
+
if (saveResult.is_error()) throw saveResult.error
|
|
285
|
+
const quarantineResult = storage.save(this.QUARANTINED_FILES_KEY, quarantined)
|
|
286
|
+
if (quarantineResult.is_error()) throw quarantineResult.error
|
|
287
|
+
for (const captureId of missingCaptureIds) {
|
|
288
|
+
galleryTransferLedger.releaseMissingLocalCommit(captureId, true)
|
|
289
|
+
}
|
|
241
290
|
}
|
|
242
291
|
|
|
243
292
|
return reconstructedFiles
|
|
244
293
|
}
|
|
245
294
|
|
|
295
|
+
/**
|
|
296
|
+
* Reconcile the remote manifest against the app-local gallery index before ledger filtering.
|
|
297
|
+
* Android backup/restore and data-preserving reinstalls can restore MMKV ledger rows without
|
|
298
|
+
* restoring app-private media. Only captures currently advertised by the glasses are released,
|
|
299
|
+
* so acknowledged captures that remain in glasses trash are not resurrected unnecessarily.
|
|
300
|
+
*/
|
|
301
|
+
async reconcileRemoteCaptures(
|
|
302
|
+
captureIds: string[],
|
|
303
|
+
downloadedFiles?: Record<string, DownloadedFile>,
|
|
304
|
+
): Promise<number> {
|
|
305
|
+
const localFiles = downloadedFiles || (await this.getDownloadedFiles())
|
|
306
|
+
let released = 0
|
|
307
|
+
for (const captureId of captureIds) {
|
|
308
|
+
const entry = galleryTransferLedger.get(captureId)
|
|
309
|
+
if (!entry || !galleryTransferLedger.isLocallyCommitted(captureId)) continue
|
|
310
|
+
const localFile = localFiles[captureId]
|
|
311
|
+
const localFileExists = localFile?.filePath ? await RNFS.exists(localFile.filePath).catch(() => false) : false
|
|
312
|
+
if (localFileExists) continue
|
|
313
|
+
|
|
314
|
+
// The transfer ledger and gallery index are persisted independently. A crash can leave the
|
|
315
|
+
// committed media in place after its index write was lost, so repair the index from the
|
|
316
|
+
// ledger before deciding that the capture needs to be restored from the glasses.
|
|
317
|
+
const committedPath = entry.finalPath?.replace(/^file:\/\//, "")
|
|
318
|
+
const committedFileExists = committedPath ? await RNFS.exists(committedPath).catch(() => false) : false
|
|
319
|
+
if (committedPath && committedFileExists) {
|
|
320
|
+
try {
|
|
321
|
+
const stat = await RNFS.stat(committedPath)
|
|
322
|
+
const size = Number(stat.size)
|
|
323
|
+
if (Number.isFinite(size) && size > 0) {
|
|
324
|
+
const recovered = this.convertToDownloadedFile(
|
|
325
|
+
{
|
|
326
|
+
name: captureId,
|
|
327
|
+
url: "",
|
|
328
|
+
download: "",
|
|
329
|
+
size,
|
|
330
|
+
modified: entry.timestamp,
|
|
331
|
+
mime_type: entry.captureType === "video" ? "video/mp4" : "image/jpeg",
|
|
332
|
+
is_video: entry.captureType === "video",
|
|
333
|
+
filePath: committedPath,
|
|
334
|
+
},
|
|
335
|
+
committedPath,
|
|
336
|
+
entry.thumbnailPath,
|
|
337
|
+
)
|
|
338
|
+
recovered.capture_id = captureId
|
|
339
|
+
recovered.assetReceipt = entry.assetReceipt
|
|
340
|
+
await this.saveDownloadedFile(recovered)
|
|
341
|
+
localFiles[captureId] = recovered
|
|
342
|
+
continue
|
|
343
|
+
}
|
|
344
|
+
} catch (error) {
|
|
345
|
+
console.warn(`[LocalStorage] Could not recover gallery index for ${captureId}:`, error)
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
galleryTransferLedger.releaseMissingLocalCommit(captureId, true)
|
|
349
|
+
released++
|
|
350
|
+
}
|
|
351
|
+
if (released > 0) {
|
|
352
|
+
console.warn(`[LocalStorage] Released ${released} stale gallery ledger commit(s) missing local media`)
|
|
353
|
+
}
|
|
354
|
+
return released
|
|
355
|
+
}
|
|
356
|
+
|
|
246
357
|
/**
|
|
247
358
|
* Get downloaded file by name
|
|
248
359
|
*/
|
|
@@ -256,6 +367,14 @@ export class LocalStorageService {
|
|
|
256
367
|
}
|
|
257
368
|
}
|
|
258
369
|
|
|
370
|
+
/** Persist a durable camera-roll receipt without replacing the local-file generation. */
|
|
371
|
+
async updateDownloadedFileAssetReceipt(fileName: string, assetReceipt: GalleryAssetReceipt): Promise<void> {
|
|
372
|
+
const files = await this.getDownloadedFiles()
|
|
373
|
+
const file = files[fileName]
|
|
374
|
+
if (!file) throw new Error(`Downloaded file is missing: ${fileName}`)
|
|
375
|
+
await this.saveDownloadedFile({...file, assetReceipt})
|
|
376
|
+
}
|
|
377
|
+
|
|
259
378
|
/**
|
|
260
379
|
* Delete downloaded file (both metadata and actual files)
|
|
261
380
|
*/
|
|
@@ -286,6 +405,7 @@ export class LocalStorageService {
|
|
|
286
405
|
const rawFiles = res.value
|
|
287
406
|
delete rawFiles[fileName]
|
|
288
407
|
await storage.save(this.DOWNLOADED_FILES_KEY, rawFiles)
|
|
408
|
+
galleryTransferLedger.releaseMissingLocalCommit(fileName)
|
|
289
409
|
return true
|
|
290
410
|
}
|
|
291
411
|
return false
|
|
@@ -295,6 +415,25 @@ export class LocalStorageService {
|
|
|
295
415
|
}
|
|
296
416
|
}
|
|
297
417
|
|
|
418
|
+
/** Preserve unresolved metadata for repair instead of silently deleting it from the gallery. */
|
|
419
|
+
async quarantineDownloadedFile(fileName: string, reason: string): Promise<void> {
|
|
420
|
+
const rawFiles = this.loadRawDownloadedFiles()
|
|
421
|
+
const file = rawFiles[fileName]
|
|
422
|
+
if (!file) return
|
|
423
|
+
const quarantined = this.loadQuarantinedFiles()
|
|
424
|
+
quarantined[fileName] = {...file, quarantineReason: reason} as DownloadedFile
|
|
425
|
+
delete rawFiles[fileName]
|
|
426
|
+
const quarantineResult = storage.save(this.QUARANTINED_FILES_KEY, quarantined)
|
|
427
|
+
if (quarantineResult.is_error()) throw quarantineResult.error
|
|
428
|
+
const filesResult = storage.save(this.DOWNLOADED_FILES_KEY, rawFiles)
|
|
429
|
+
if (filesResult.is_error()) throw filesResult.error
|
|
430
|
+
galleryTransferLedger.releaseMissingLocalCommit(fileName, true)
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
async getQuarantinedDownloadedFiles(): Promise<Record<string, DownloadedFile>> {
|
|
434
|
+
return this.loadQuarantinedFiles()
|
|
435
|
+
}
|
|
436
|
+
|
|
298
437
|
/**
|
|
299
438
|
* Convert PhotoInfo to DownloadedFile (assumes files are already saved to filesystem)
|
|
300
439
|
*/
|
|
@@ -327,15 +466,15 @@ export class LocalStorageService {
|
|
|
327
466
|
const fileUrl = downloadedFile.filePath.startsWith("file://")
|
|
328
467
|
? downloadedFile.filePath
|
|
329
468
|
: downloadedFile.filePath.startsWith("/")
|
|
330
|
-
|
|
331
|
-
|
|
469
|
+
? `file://${downloadedFile.filePath}` // Path already has leading slash
|
|
470
|
+
: `file:///${downloadedFile.filePath}` // Path needs leading slash
|
|
332
471
|
|
|
333
472
|
const thumbnailUrl = downloadedFile.thumbnailPath
|
|
334
473
|
? downloadedFile.thumbnailPath.startsWith("file://")
|
|
335
474
|
? downloadedFile.thumbnailPath
|
|
336
475
|
: downloadedFile.thumbnailPath.startsWith("/")
|
|
337
|
-
|
|
338
|
-
|
|
476
|
+
? `file://${downloadedFile.thumbnailPath}` // Path already has leading slash
|
|
477
|
+
: `file:///${downloadedFile.thumbnailPath}` // Path needs leading slash
|
|
339
478
|
: undefined
|
|
340
479
|
|
|
341
480
|
return {
|
|
@@ -408,6 +547,8 @@ export class LocalStorageService {
|
|
|
408
547
|
console.error("[LocalStorage] Error clearing downloaded files:", res.error)
|
|
409
548
|
throw res.error
|
|
410
549
|
}
|
|
550
|
+
storage.remove(this.QUARANTINED_FILES_KEY)
|
|
551
|
+
galleryTransferLedger.releaseAllMissingLocalCommits()
|
|
411
552
|
console.log("[LocalStorage] Cleared all downloaded files and thumbnails")
|
|
412
553
|
}
|
|
413
554
|
|
|
@@ -492,6 +633,20 @@ export class LocalStorageService {
|
|
|
492
633
|
// Has resumable queue if there are still files to process
|
|
493
634
|
return queue.currentIndex < queue.files.length
|
|
494
635
|
}
|
|
636
|
+
|
|
637
|
+
private loadRawDownloadedFiles(): Record<string, DownloadedFile> {
|
|
638
|
+
const result = storage.load<Record<string, DownloadedFile>>(this.DOWNLOADED_FILES_KEY)
|
|
639
|
+
return result.is_error() ? {} : result.value
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
private loadQuarantinedFiles(): Record<string, DownloadedFile> {
|
|
643
|
+
const result = storage.load<Record<string, DownloadedFile>>(this.QUARANTINED_FILES_KEY)
|
|
644
|
+
return result.is_error() ? {} : result.value
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
private toPortableRelativePath(path: string): string | null {
|
|
648
|
+
return toPortableGalleryPath(path, RNFS.DocumentDirectoryPath)
|
|
649
|
+
}
|
|
495
650
|
}
|
|
496
651
|
|
|
497
652
|
export const localStorageService = LocalStorageService.getInstance()
|