@use-voltra/ios-client 2.2.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Voltra.podspec +1 -0
- package/build/commonjs/events.js +23 -0
- package/build/commonjs/events.js.map +1 -1
- package/build/commonjs/index.js +59 -0
- package/build/commonjs/index.js.map +1 -1
- package/build/commonjs/live-activity/api.js +3 -1
- package/build/commonjs/live-activity/api.js.map +1 -1
- package/build/commonjs/live-activity/dynamic-api.js +173 -0
- package/build/commonjs/live-activity/dynamic-api.js.map +1 -0
- package/build/commonjs/native/NativeVoltra.js.map +1 -1
- package/build/commonjs/utils/enableDynamicLiveActivityHotReload.js +47 -0
- package/build/commonjs/utils/enableDynamicLiveActivityHotReload.js.map +1 -0
- package/build/commonjs/utils/enableWidgetHotReload.js +8 -11
- package/build/commonjs/utils/enableWidgetHotReload.js.map +1 -1
- package/build/commonjs/utils/useUpdateOnHMR.js +3 -7
- package/build/commonjs/utils/useUpdateOnHMR.js.map +1 -1
- package/build/commonjs/widgets/server-credentials.js +9 -0
- package/build/commonjs/widgets/server-credentials.js.map +1 -1
- package/build/commonjs/widgets/server-update.js +78 -0
- package/build/commonjs/widgets/server-update.js.map +1 -0
- package/build/module/events.js +23 -0
- package/build/module/events.js.map +1 -1
- package/build/module/index.js +3 -0
- package/build/module/index.js.map +1 -1
- package/build/module/live-activity/api.js +2 -2
- package/build/module/live-activity/api.js.map +1 -1
- package/build/module/live-activity/dynamic-api.js +167 -0
- package/build/module/live-activity/dynamic-api.js.map +1 -0
- package/build/module/native/NativeVoltra.js.map +1 -1
- package/build/module/utils/enableDynamicLiveActivityHotReload.js +43 -0
- package/build/module/utils/enableDynamicLiveActivityHotReload.js.map +1 -0
- package/build/module/utils/enableWidgetHotReload.js +9 -11
- package/build/module/utils/enableWidgetHotReload.js.map +1 -1
- package/build/module/utils/useUpdateOnHMR.js +3 -7
- package/build/module/utils/useUpdateOnHMR.js.map +1 -1
- package/build/module/widgets/server-credentials.js +9 -0
- package/build/module/widgets/server-credentials.js.map +1 -1
- package/build/module/widgets/server-update.js +72 -0
- package/build/module/widgets/server-update.js.map +1 -0
- package/build/typescript/commonjs/events.d.ts +7 -0
- package/build/typescript/commonjs/events.d.ts.map +1 -1
- package/build/typescript/commonjs/index.d.ts +3 -0
- package/build/typescript/commonjs/index.d.ts.map +1 -1
- package/build/typescript/commonjs/live-activity/api.d.ts +7 -0
- package/build/typescript/commonjs/live-activity/api.d.ts.map +1 -1
- package/build/typescript/commonjs/live-activity/dynamic-api.d.ts +54 -0
- package/build/typescript/commonjs/live-activity/dynamic-api.d.ts.map +1 -0
- package/build/typescript/commonjs/native/NativeVoltra.d.ts +20 -0
- package/build/typescript/commonjs/native/NativeVoltra.d.ts.map +1 -1
- package/build/typescript/commonjs/types.d.ts +1 -1
- package/build/typescript/commonjs/types.d.ts.map +1 -1
- package/build/typescript/commonjs/utils/enableDynamicLiveActivityHotReload.d.ts +15 -0
- package/build/typescript/commonjs/utils/enableDynamicLiveActivityHotReload.d.ts.map +1 -0
- package/build/typescript/commonjs/utils/enableWidgetHotReload.d.ts +5 -7
- package/build/typescript/commonjs/utils/enableWidgetHotReload.d.ts.map +1 -1
- package/build/typescript/commonjs/utils/useUpdateOnHMR.d.ts +0 -3
- package/build/typescript/commonjs/utils/useUpdateOnHMR.d.ts.map +1 -1
- package/build/typescript/commonjs/widgets/server-credentials.d.ts +8 -0
- package/build/typescript/commonjs/widgets/server-credentials.d.ts.map +1 -1
- package/build/typescript/commonjs/widgets/server-update.d.ts +64 -0
- package/build/typescript/commonjs/widgets/server-update.d.ts.map +1 -0
- package/build/typescript/module/events.d.ts +7 -0
- package/build/typescript/module/events.d.ts.map +1 -1
- package/build/typescript/module/index.d.ts +3 -0
- package/build/typescript/module/index.d.ts.map +1 -1
- package/build/typescript/module/live-activity/api.d.ts +7 -0
- package/build/typescript/module/live-activity/api.d.ts.map +1 -1
- package/build/typescript/module/live-activity/dynamic-api.d.ts +54 -0
- package/build/typescript/module/live-activity/dynamic-api.d.ts.map +1 -0
- package/build/typescript/module/native/NativeVoltra.d.ts +20 -0
- package/build/typescript/module/native/NativeVoltra.d.ts.map +1 -1
- package/build/typescript/module/types.d.ts +1 -1
- package/build/typescript/module/types.d.ts.map +1 -1
- package/build/typescript/module/utils/enableDynamicLiveActivityHotReload.d.ts +15 -0
- package/build/typescript/module/utils/enableDynamicLiveActivityHotReload.d.ts.map +1 -0
- package/build/typescript/module/utils/enableWidgetHotReload.d.ts +5 -7
- package/build/typescript/module/utils/enableWidgetHotReload.d.ts.map +1 -1
- package/build/typescript/module/utils/useUpdateOnHMR.d.ts +0 -3
- package/build/typescript/module/utils/useUpdateOnHMR.d.ts.map +1 -1
- package/build/typescript/module/widgets/server-credentials.d.ts +8 -0
- package/build/typescript/module/widgets/server-credentials.d.ts.map +1 -1
- package/build/typescript/module/widgets/server-update.d.ts +64 -0
- package/build/typescript/module/widgets/server-update.d.ts.map +1 -0
- package/expo-plugin/build/cjs/constants.js +20 -1
- package/expo-plugin/build/cjs/constants.js.map +1 -1
- package/expo-plugin/build/cjs/index.js +6 -0
- package/expo-plugin/build/cjs/index.js.map +1 -1
- package/expo-plugin/build/cjs/ios/index.js +1 -0
- package/expo-plugin/build/cjs/ios/index.js.map +1 -1
- package/expo-plugin/build/cjs/ios/infoPlist.js +28 -5
- package/expo-plugin/build/cjs/ios/infoPlist.js.map +1 -1
- package/expo-plugin/build/cjs/ios/serverUpdate.js +25 -0
- package/expo-plugin/build/cjs/ios/serverUpdate.js.map +1 -0
- package/expo-plugin/build/cjs/ios-widget/clientRendered.js +4 -4
- package/expo-plugin/build/cjs/ios-widget/clientRendered.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/clientRenderedPrerender.js +5 -5
- package/expo-plugin/build/cjs/ios-widget/clientRenderedPrerender.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/dynamic-live-activity/swift.js +130 -0
- package/expo-plugin/build/cjs/ios-widget/dynamic-live-activity/swift.js.map +1 -0
- package/expo-plugin/build/cjs/ios-widget/files/index.js +9 -2
- package/expo-plugin/build/cjs/ios-widget/files/index.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/files/infoPlist.js +6 -3
- package/expo-plugin/build/cjs/ios-widget/files/infoPlist.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/files/manifest.js +24 -0
- package/expo-plugin/build/cjs/ios-widget/files/manifest.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/files/swift-utils.js +7 -0
- package/expo-plugin/build/cjs/ios-widget/files/swift-utils.js.map +1 -0
- package/expo-plugin/build/cjs/ios-widget/files/swift.js +56 -26
- package/expo-plugin/build/cjs/ios-widget/files/swift.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/index.js +9 -3
- package/expo-plugin/build/cjs/ios-widget/index.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/widgetPlist.js +34 -22
- package/expo-plugin/build/cjs/ios-widget/widgetPlist.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/xcode/buildPhases.js +51 -11
- package/expo-plugin/build/cjs/ios-widget/xcode/buildPhases.js.map +1 -1
- package/expo-plugin/build/cjs/ios-widget/xcode/index.js +21 -5
- package/expo-plugin/build/cjs/ios-widget/xcode/index.js.map +1 -1
- package/expo-plugin/build/cjs/utils/urlScheme.js +36 -14
- package/expo-plugin/build/cjs/utils/urlScheme.js.map +1 -1
- package/expo-plugin/build/cjs/validation.js +54 -0
- package/expo-plugin/build/cjs/validation.js.map +1 -1
- package/expo-plugin/build/esm/constants.js +17 -0
- package/expo-plugin/build/esm/constants.js.map +1 -1
- package/expo-plugin/build/esm/index.js +6 -0
- package/expo-plugin/build/esm/index.js.map +1 -1
- package/expo-plugin/build/esm/ios/index.js +1 -0
- package/expo-plugin/build/esm/ios/index.js.map +1 -1
- package/expo-plugin/build/esm/ios/infoPlist.js +28 -5
- package/expo-plugin/build/esm/ios/infoPlist.js.map +1 -1
- package/expo-plugin/build/esm/ios/serverUpdate.js +21 -0
- package/expo-plugin/build/esm/ios/serverUpdate.js.map +1 -0
- package/expo-plugin/build/esm/ios-widget/clientRendered.js +5 -5
- package/expo-plugin/build/esm/ios-widget/clientRendered.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/clientRenderedPrerender.js +6 -6
- package/expo-plugin/build/esm/ios-widget/clientRenderedPrerender.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/dynamic-live-activity/swift.js +122 -0
- package/expo-plugin/build/esm/ios-widget/dynamic-live-activity/swift.js.map +1 -0
- package/expo-plugin/build/esm/ios-widget/files/index.js +10 -3
- package/expo-plugin/build/esm/ios-widget/files/index.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/files/infoPlist.js +6 -3
- package/expo-plugin/build/esm/ios-widget/files/infoPlist.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/files/manifest.js +23 -1
- package/expo-plugin/build/esm/ios-widget/files/manifest.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/files/swift-utils.js +4 -0
- package/expo-plugin/build/esm/ios-widget/files/swift-utils.js.map +1 -0
- package/expo-plugin/build/esm/ios-widget/files/swift.js +50 -20
- package/expo-plugin/build/esm/ios-widget/files/swift.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/index.js +9 -3
- package/expo-plugin/build/esm/ios-widget/index.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/widgetPlist.js +34 -22
- package/expo-plugin/build/esm/ios-widget/widgetPlist.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/xcode/buildPhases.js +51 -11
- package/expo-plugin/build/esm/ios-widget/xcode/buildPhases.js.map +1 -1
- package/expo-plugin/build/esm/ios-widget/xcode/index.js +21 -5
- package/expo-plugin/build/esm/ios-widget/xcode/index.js.map +1 -1
- package/expo-plugin/build/esm/utils/urlScheme.js +34 -14
- package/expo-plugin/build/esm/utils/urlScheme.js.map +1 -1
- package/expo-plugin/build/esm/validation.js +54 -1
- package/expo-plugin/build/esm/validation.js.map +1 -1
- package/expo-plugin/build/types/constants.d.ts +10 -1
- package/expo-plugin/build/types/constants.d.ts.map +1 -1
- package/expo-plugin/build/types/index.d.ts +1 -1
- package/expo-plugin/build/types/index.d.ts.map +1 -1
- package/expo-plugin/build/types/ios/index.d.ts +2 -0
- package/expo-plugin/build/types/ios/index.d.ts.map +1 -1
- package/expo-plugin/build/types/ios/infoPlist.d.ts +2 -0
- package/expo-plugin/build/types/ios/infoPlist.d.ts.map +1 -1
- package/expo-plugin/build/types/ios/serverUpdate.d.ts +11 -0
- package/expo-plugin/build/types/ios/serverUpdate.d.ts.map +1 -0
- package/expo-plugin/build/types/ios-widget/clientRendered.d.ts.map +1 -1
- package/expo-plugin/build/types/ios-widget/clientRenderedPrerender.d.ts.map +1 -1
- package/expo-plugin/build/types/ios-widget/dynamic-live-activity/swift.d.ts +7 -0
- package/expo-plugin/build/types/ios-widget/dynamic-live-activity/swift.d.ts.map +1 -0
- package/expo-plugin/build/types/ios-widget/files/index.d.ts +3 -1
- package/expo-plugin/build/types/ios-widget/files/index.d.ts.map +1 -1
- package/expo-plugin/build/types/ios-widget/files/infoPlist.d.ts +2 -1
- package/expo-plugin/build/types/ios-widget/files/infoPlist.d.ts.map +1 -1
- package/expo-plugin/build/types/ios-widget/files/manifest.d.ts +9 -2
- package/expo-plugin/build/types/ios-widget/files/manifest.d.ts.map +1 -1
- package/expo-plugin/build/types/ios-widget/files/swift-utils.d.ts +2 -0
- package/expo-plugin/build/types/ios-widget/files/swift-utils.d.ts.map +1 -0
- package/expo-plugin/build/types/ios-widget/files/swift.d.ts +6 -2
- package/expo-plugin/build/types/ios-widget/files/swift.d.ts.map +1 -1
- package/expo-plugin/build/types/ios-widget/index.d.ts +3 -1
- package/expo-plugin/build/types/ios-widget/index.d.ts.map +1 -1
- package/expo-plugin/build/types/ios-widget/widgetPlist.d.ts.map +1 -1
- package/expo-plugin/build/types/ios-widget/xcode/buildPhases.d.ts +3 -1
- package/expo-plugin/build/types/ios-widget/xcode/buildPhases.d.ts.map +1 -1
- package/expo-plugin/build/types/ios-widget/xcode/index.d.ts +2 -1
- package/expo-plugin/build/types/ios-widget/xcode/index.d.ts.map +1 -1
- package/expo-plugin/build/types/types.d.ts +23 -4
- package/expo-plugin/build/types/types.d.ts.map +1 -1
- package/expo-plugin/build/types/utils/urlScheme.d.ts +16 -0
- package/expo-plugin/build/types/utils/urlScheme.d.ts.map +1 -1
- package/expo-plugin/build/types/validation.d.ts +2 -1
- package/expo-plugin/build/types/validation.d.ts.map +1 -1
- package/expo-plugin/src/constants.ts +24 -1
- package/expo-plugin/src/index.ts +9 -0
- package/expo-plugin/src/ios/index.ts +3 -0
- package/expo-plugin/src/ios/infoPlist.ts +33 -5
- package/expo-plugin/src/ios/serverUpdate.ts +29 -0
- package/expo-plugin/src/ios-widget/clientRendered.ts +9 -5
- package/expo-plugin/src/ios-widget/clientRenderedPrerender.ts +11 -6
- package/expo-plugin/src/ios-widget/dynamic-live-activity/swift.ts +138 -0
- package/expo-plugin/src/ios-widget/files/index.ts +15 -4
- package/expo-plugin/src/ios-widget/files/infoPlist.ts +17 -3
- package/expo-plugin/src/ios-widget/files/manifest.ts +42 -2
- package/expo-plugin/src/ios-widget/files/swift-utils.ts +3 -0
- package/expo-plugin/src/ios-widget/files/swift.ts +69 -22
- package/expo-plugin/src/ios-widget/index.ts +13 -3
- package/expo-plugin/src/ios-widget/widgetPlist.ts +37 -23
- package/expo-plugin/src/ios-widget/xcode/__snapshots__/applyXcodeChanges.node.test.ts.snap +34 -28
- package/expo-plugin/src/ios-widget/xcode/buildPhases.ts +59 -12
- package/expo-plugin/src/ios-widget/xcode/index.ts +23 -6
- package/expo-plugin/src/types.ts +28 -4
- package/expo-plugin/src/utils/urlScheme.ts +47 -17
- package/expo-plugin/src/validation.ts +76 -1
- package/ios/Package.swift +32 -3
- package/ios/VoltraWidget.podspec +1 -0
- package/ios/app/NativeVoltra.mm +107 -7
- package/ios/app/VoltraLiveActivityManager.swift +30 -0
- package/ios/app/VoltraLiveActivityService.swift +77 -5
- package/ios/app/VoltraModule.swift +99 -1
- package/ios/app/VoltraModuleImpl.swift +100 -2
- package/ios/app/VoltraViewComponentView.mm +3 -3
- package/ios/app/VoltraWidgetService.swift +147 -12
- package/ios/app/dynamic-live-activity/VoltraDynamicLiveActivityService.swift +97 -0
- package/ios/app/dynamic-live-activity/VoltraLiveActivityChronology.swift +68 -0
- package/ios/shared/DynamicWidgetPropsStore.swift +73 -6
- package/ios/shared/DynamicWidgetServerUpdate/DynamicWidgetServerFetchResolver.swift +34 -0
- package/ios/shared/DynamicWidgetServerUpdate/DynamicWidgetServerProps.swift +55 -0
- package/ios/shared/DynamicWidgetServerUpdate/DynamicWidgetServerPropsStore.swift +146 -0
- package/ios/shared/DynamicWidgetServerUpdate/DynamicWidgetServerUpdateRunner.swift +193 -0
- package/ios/shared/ServerWidgetContentResolver.swift +60 -0
- package/ios/shared/ServerWidgetResponseStore.swift +25 -0
- package/ios/shared/ShortNames.swift +6 -0
- package/ios/shared/VoltraConfig.swift +41 -0
- package/ios/shared/VoltraConstants.swift +15 -0
- package/ios/shared/VoltraElement.swift +127 -43
- package/ios/shared/VoltraEventBus.swift +52 -7
- package/ios/shared/VoltraJSRenderer.swift +90 -22
- package/ios/shared/VoltraNode.swift +1 -109
- package/ios/shared/VoltraRefreshIntent.swift +1 -1
- package/ios/shared/VoltraWidgetKind.swift +41 -0
- package/ios/shared/VoltraWidgetServerFetcher.swift +52 -107
- package/ios/shared/WidgetServer/VoltraWidgetAppearance.swift +17 -0
- package/ios/shared/WidgetServer/VoltraWidgetServer.swift +138 -0
- package/ios/shared/WidgetServer/WidgetCanonicalConfiguration.swift +77 -0
- package/ios/shared/WidgetServer/WidgetScope.swift +55 -0
- package/ios/shared/WidgetServer/WidgetServerEtagStore.swift +55 -0
- package/ios/shared/WidgetServer/WidgetServerFetcher.swift +179 -0
- package/ios/shared/WidgetServer/WidgetServerRequestBuilder.swift +114 -0
- package/ios/shared/WidgetServer/WidgetServerSettingsCodec.swift +47 -0
- package/ios/shared/WidgetServer/WidgetServerSettingsResolver.swift +129 -0
- package/ios/shared/WidgetServer/WidgetServerSettingsStore.swift +170 -0
- package/ios/shared/WidgetServer/WidgetServerSettingsValidator.swift +73 -0
- package/ios/shared/WidgetServer/WidgetServerUpdateSettings.swift +123 -0
- package/ios/shared/WidgetServer/WidgetServerUpdateSettingsJson.swift +115 -0
- package/ios/shared/dynamic-live-activity/DynamicLiveActivityPropsCodec.swift +13 -0
- package/ios/shared/dynamic-live-activity/VoltraDynamicLiveActivityBundleSource.swift +156 -0
- package/ios/shared/dynamic-live-activity/VoltraDynamicLiveActivityObserver.swift +97 -0
- package/ios/shared/dynamic-live-activity/VoltraDynamicLiveActivityOperations.swift +105 -0
- package/ios/shared/dynamic-live-activity/VoltraDynamicLiveActivityPayloadValidator.swift +55 -0
- package/ios/shared/dynamic-live-activity/VoltraDynamicLiveActivityRegistry.swift +143 -0
- package/ios/shared/dynamic-live-activity/VoltraDynamicLiveActivityRenderFailureQueue.swift +158 -0
- package/ios/shared/dynamic-live-activity/VoltraDynamicLiveActivityRenderFailureReporter.swift +120 -0
- package/ios/shared/dynamic-live-activity/VoltraDynamicLiveActivityRenderer.swift +370 -0
- package/ios/shared/dynamic-live-activity/VoltraDynamicLiveActivityTypes.swift +87 -0
- package/ios/shared/dynamic-live-activity/VoltraLiveActivityOrder.swift +19 -0
- package/ios/target/VoltraClientWidgetRuntime.swift +44 -6
- package/ios/target/VoltraDynamicWidgetServerUpdateProvider.swift +204 -0
- package/ios/target/VoltraHomeWidget.swift +85 -90
- package/ios/ui/Extensions/VoltraNode+View.swift +113 -0
- package/ios/ui/Generated/Parameters/ChartParameters.swift +3 -0
- package/ios/ui/Helpers/VoltraDeepLinkResolver.swift +2 -2
- package/ios/ui/Views/VoltraChart.swift +108 -0
- package/package.json +4 -4
- package/src/events.ts +34 -0
- package/src/index.ts +22 -0
- package/src/live-activity/api.ts +2 -2
- package/src/live-activity/dynamic-api.ts +240 -0
- package/src/native/NativeVoltra.ts +21 -0
- package/src/types.ts +4 -0
- package/src/utils/enableDynamicLiveActivityHotReload.ts +50 -0
- package/src/utils/enableWidgetHotReload.ts +9 -16
- package/src/utils/useUpdateOnHMR.ts +3 -12
- package/src/widgets/server-credentials.ts +8 -0
- package/src/widgets/server-update.ts +84 -0
- /package/ios/shared/{VoltraKeychainHelper.swift → WidgetServer/VoltraKeychainHelper.swift} +0 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.clearWidgetServerUpdate = clearWidgetServerUpdate;
|
|
7
|
+
exports.getWidgetServerUpdate = getWidgetServerUpdate;
|
|
8
|
+
exports.setWidgetServerUpdate = setWidgetServerUpdate;
|
|
9
|
+
var _VoltraModule = require("../VoltraModule.js");
|
|
10
|
+
/**
|
|
11
|
+
* Overrides a server-driven widget's `serverUpdate` settings at runtime.
|
|
12
|
+
*
|
|
13
|
+
* The `serverUpdate` entry in app.json supplies the defaults; this replaces any of them for one
|
|
14
|
+
* widget, or for every server-driven widget when no `widgetId` is given. A widget-scoped call wins
|
|
15
|
+
* over a global one, and `headers` and `query` merge per key across the two.
|
|
16
|
+
*
|
|
17
|
+
* Each call replaces the whole layer it writes, so pass every field you want to keep. Setting
|
|
18
|
+
* anything reschedules the widgets it affects and fetches once immediately.
|
|
19
|
+
*
|
|
20
|
+
* @example Point a widget at the tenant's own backend once the user has logged in.
|
|
21
|
+
* ```ts
|
|
22
|
+
* await setWidgetServerUpdate(
|
|
23
|
+
* { url: `https://${tenant}.example.com/widgets/portfolio`, headers: { Authorization: `Bearer ${token}` } },
|
|
24
|
+
* { widgetId: 'portfolio' }
|
|
25
|
+
* )
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @example Take a widget over and drive it from the app until you hand it back.
|
|
29
|
+
* ```ts
|
|
30
|
+
* await setWidgetServerUpdate({ enabled: false }, { widgetId: 'portfolio' })
|
|
31
|
+
* await updateDynamicWidget('portfolio', localProps)
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* @throws if the widget has no `serverUpdate` in app.json, if the URL is not https (plain http is
|
|
35
|
+
* allowed only in a debug build, and only for a local dev host), or if `query` names one of the
|
|
36
|
+
* parameters Voltra already sends.
|
|
37
|
+
*/
|
|
38
|
+
async function setWidgetServerUpdate(settings, options) {
|
|
39
|
+
return (0, _VoltraModule.getNativeVoltra)().setWidgetServerUpdate(JSON.stringify(settings ?? {}), options?.widgetId ?? null);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Drops the runtime settings for one widget, or the global ones when no `widgetId` is given, so
|
|
44
|
+
* the widget falls back to what app.json configured.
|
|
45
|
+
*
|
|
46
|
+
* Clearing the global settings is the logout gesture: along with the settings it drops what the
|
|
47
|
+
* server last sent for every server-driven widget, so a Dynamic Widget goes back to `{}` with
|
|
48
|
+
* `env.serverUpdate.status` of `never` rather than showing the previous account's data. Credentials
|
|
49
|
+
* set with the deprecated `setWidgetServerCredentials` are stored separately — clear those with
|
|
50
|
+
* `clearWidgetServerCredentials`.
|
|
51
|
+
*/
|
|
52
|
+
async function clearWidgetServerUpdate(options) {
|
|
53
|
+
return (0, _VoltraModule.getNativeVoltra)().clearWidgetServerUpdate(options?.widgetId ?? null);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Reads a widget's `serverUpdate` settings back, without reasoning about what was set where.
|
|
58
|
+
*
|
|
59
|
+
* With a `widgetId`, this is the fully resolved settings that widget would fetch with right now:
|
|
60
|
+
* every layer flattened and app.json's defaults applied — `null` if the widget is not
|
|
61
|
+
* server-driven. Without one, this is the raw contents of the global layer only — what the last
|
|
62
|
+
* `setWidgetServerUpdate(settings)` call (with no `widgetId`) wrote, with no defaults applied and
|
|
63
|
+
* every field optional — `null` if nothing has been set globally.
|
|
64
|
+
*
|
|
65
|
+
* @example Check what a widget is about to fetch from.
|
|
66
|
+
* ```ts
|
|
67
|
+
* const snapshot = await getWidgetServerUpdate({ widgetId: 'portfolio' })
|
|
68
|
+
* if (snapshot?.enabled) {
|
|
69
|
+
* console.log(`portfolio fetches ${snapshot.url} every ${snapshot.intervalMinutes}m`)
|
|
70
|
+
* }
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
|
|
74
|
+
async function getWidgetServerUpdate(options) {
|
|
75
|
+
const json = await (0, _VoltraModule.getNativeVoltra)().getWidgetServerUpdate(options?.widgetId ?? null);
|
|
76
|
+
return json == null ? null : JSON.parse(json);
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=server-update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_VoltraModule","require","setWidgetServerUpdate","settings","options","getNativeVoltra","JSON","stringify","widgetId","clearWidgetServerUpdate","getWidgetServerUpdate","json","parse"],"sourceRoot":"../../../src","sources":["widgets/server-update.ts"],"mappings":";;;;;;;;AACA,IAAAA,aAAA,GAAAC,OAAA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAeC,qBAAqBA,CACzCC,QAAoC,EACpCC,OAAmC,EACpB;EACf,OAAO,IAAAC,6BAAe,EAAC,CAAC,CAACH,qBAAqB,CAACI,IAAI,CAACC,SAAS,CAACJ,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAEC,OAAO,EAAEI,QAAQ,IAAI,IAAI,CAAC;AAC3G;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAeC,uBAAuBA,CAACL,OAAmC,EAAiB;EAChG,OAAO,IAAAC,6BAAe,EAAC,CAAC,CAACI,uBAAuB,CAACL,OAAO,EAAEI,QAAQ,IAAI,IAAI,CAAC;AAC7E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGO,eAAeE,qBAAqBA,CACzCN,OAAmC,EACsC;EACzE,MAAMO,IAAI,GAAG,MAAM,IAAAN,6BAAe,EAAC,CAAC,CAACK,qBAAqB,CAACN,OAAO,EAAEI,QAAQ,IAAI,IAAI,CAAC;EACrF,OAAOG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAGL,IAAI,CAACM,KAAK,CAACD,IAAI,CAAC;AAC/C","ignoreList":[]}
|
package/build/module/events.js
CHANGED
|
@@ -5,6 +5,11 @@ import { getNativeVoltra } from './VoltraModule.js';
|
|
|
5
5
|
const noopSubscription = {
|
|
6
6
|
remove: () => {}
|
|
7
7
|
};
|
|
8
|
+
|
|
9
|
+
// Codegen EventEmitter subscriptions do not tell native code when their last
|
|
10
|
+
// JavaScript listener goes away. Keep this count at the public API boundary so
|
|
11
|
+
// the App Group queue is drained only while it can actually be delivered.
|
|
12
|
+
let dynamicRenderFailureListenerCount = 0;
|
|
8
13
|
export function addVoltraListener(event, listener) {
|
|
9
14
|
if (Platform.OS !== 'ios') {
|
|
10
15
|
console.warn(`[Voltra] Event '${event}' is only supported on iOS. Returning no-op subscription.`);
|
|
@@ -20,6 +25,24 @@ export function addVoltraListener(event, listener) {
|
|
|
20
25
|
return voltraModule.onStateChanged(listener);
|
|
21
26
|
case 'interaction':
|
|
22
27
|
return voltraModule.onInteraction(listener);
|
|
28
|
+
case 'dynamicLiveActivityRenderFailed':
|
|
29
|
+
const subscription = voltraModule.onDynamicLiveActivityRenderFailed(listener);
|
|
30
|
+
dynamicRenderFailureListenerCount += 1;
|
|
31
|
+
if (dynamicRenderFailureListenerCount === 1) {
|
|
32
|
+
voltraModule.setDynamicLiveActivityRenderFailureListenerActive(true);
|
|
33
|
+
}
|
|
34
|
+
let removed = false;
|
|
35
|
+
return {
|
|
36
|
+
remove: () => {
|
|
37
|
+
if (removed) return;
|
|
38
|
+
removed = true;
|
|
39
|
+
subscription.remove();
|
|
40
|
+
dynamicRenderFailureListenerCount -= 1;
|
|
41
|
+
if (dynamicRenderFailureListenerCount === 0) {
|
|
42
|
+
voltraModule.setDynamicLiveActivityRenderFailureListenerActive(false);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
};
|
|
23
46
|
default:
|
|
24
47
|
console.warn(`[Voltra] Event '${event}' is not supported. Returning no-op subscription.`);
|
|
25
48
|
return noopSubscription;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","getNativeVoltra","noopSubscription","remove","addVoltraListener","event","listener","OS","console","warn","voltraModule","onActivityTokenReceived","onActivityPushToStartTokenReceived","onStateChanged","onInteraction"],"sourceRoot":"../../src","sources":["events.ts"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,cAAc;AAGvC,SAASC,eAAe,QAAQ,mBAAmB;
|
|
1
|
+
{"version":3,"names":["Platform","getNativeVoltra","noopSubscription","remove","dynamicRenderFailureListenerCount","addVoltraListener","event","listener","OS","console","warn","voltraModule","onActivityTokenReceived","onActivityPushToStartTokenReceived","onStateChanged","onInteraction","subscription","onDynamicLiveActivityRenderFailed","setDynamicLiveActivityRenderFailureListenerActive","removed"],"sourceRoot":"../../src","sources":["events.ts"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,cAAc;AAGvC,SAASC,eAAe,QAAQ,mBAAmB;AAoCnD,MAAMC,gBAAmC,GAAG;EAC1CC,MAAM,EAAEA,CAAA,KAAM,CAAC;AACjB,CAAC;;AAED;AACA;AACA;AACA,IAAIC,iCAAiC,GAAG,CAAC;AAUzC,OAAO,SAASC,iBAAiBA,CAC/BC,KAAQ,EACRC,QAA4C,EACzB;EACnB,IAAIP,QAAQ,CAACQ,EAAE,KAAK,KAAK,EAAE;IACzBC,OAAO,CAACC,IAAI,CAAC,mBAAmBJ,KAAK,2DAA2D,CAAC;IACjG,OAAOJ,gBAAgB;EACzB;EAEA,MAAMS,YAAY,GAAGV,eAAe,CAAC,CAAC;EAEtC,QAAQK,KAAK;IACX,KAAK,uBAAuB;MAC1B,OAAOK,YAAY,CAACC,uBAAuB,CAACL,QAA2D,CAAC;IAC1G,KAAK,kCAAkC;MACrC,OAAOI,YAAY,CAACE,kCAAkC,CACpDN,QACF,CAAC;IACH,KAAK,aAAa;MAChB,OAAOI,YAAY,CAACG,cAAc,CAACP,QAAoD,CAAC;IAC1F,KAAK,aAAa;MAChB,OAAOI,YAAY,CAACI,aAAa,CAACR,QAAiD,CAAC;IACtF,KAAK,iCAAiC;MACpC,MAAMS,YAAY,GAAGL,YAAY,CAACM,iCAAiC,CACjEV,QACF,CAAC;MACDH,iCAAiC,IAAI,CAAC;MACtC,IAAIA,iCAAiC,KAAK,CAAC,EAAE;QAC3CO,YAAY,CAACO,iDAAiD,CAAC,IAAI,CAAC;MACtE;MAEA,IAAIC,OAAO,GAAG,KAAK;MACnB,OAAO;QACLhB,MAAM,EAAEA,CAAA,KAAM;UACZ,IAAIgB,OAAO,EAAE;UACbA,OAAO,GAAG,IAAI;UACdH,YAAY,CAACb,MAAM,CAAC,CAAC;UACrBC,iCAAiC,IAAI,CAAC;UACtC,IAAIA,iCAAiC,KAAK,CAAC,EAAE;YAC3CO,YAAY,CAACO,iDAAiD,CAAC,KAAK,CAAC;UACvE;QACF;MACF,CAAC;IACH;MACET,OAAO,CAACC,IAAI,CAAC,mBAAmBJ,KAAK,mDAAmD,CAAC;MACzF,OAAOJ,gBAAgB;EAC3B;AACF","ignoreList":[]}
|
package/build/module/index.js
CHANGED
|
@@ -9,11 +9,14 @@ export * from './events.js';
|
|
|
9
9
|
export { isGlassSupported, isHeadless, useIsHeadless } from './helpers.js';
|
|
10
10
|
export { logger } from './logger.js';
|
|
11
11
|
export { endAllLiveActivities, isLiveActivityActive, startLiveActivity, stopLiveActivity, updateLiveActivity, useLiveActivity } from './live-activity/api.js';
|
|
12
|
+
export { getDynamicLiveActivityDefinitionIds, startDynamicLiveActivity, updateDynamicLiveActivity, useDynamicLiveActivity } from './live-activity/dynamic-api.js';
|
|
12
13
|
export { clearPreloadedImages, preloadImages, reloadLiveActivities } from './preload.js';
|
|
13
14
|
export { assertRunningOnApple } from './utils/assertRunningOnApple.js';
|
|
14
15
|
export { enableWidgetHotReload } from './utils/enableWidgetHotReload.js';
|
|
16
|
+
export { enableDynamicLiveActivityHotReload } from './utils/enableDynamicLiveActivityHotReload.js';
|
|
15
17
|
export { useUpdateOnHMR } from './utils/useUpdateOnHMR.js';
|
|
16
18
|
export * from './utils/helpers.js';
|
|
19
|
+
export { clearWidgetServerUpdate, getWidgetServerUpdate, setWidgetServerUpdate } from './widgets/server-update.js';
|
|
17
20
|
export { clearWidgetServerCredentials, setWidgetServerCredentials } from './widgets/server-credentials.js';
|
|
18
21
|
export { clearAllWidgets, clearWidget, getActiveWidgets, reloadWidgets, scheduleWidget, updateWidget } from './widgets/widget-api.js';
|
|
19
22
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Voltra","VoltraLiveActivityPreview","VoltraView","VoltraWidgetPreview","updateDynamicWidget","isGlassSupported","isHeadless","useIsHeadless","logger","endAllLiveActivities","isLiveActivityActive","startLiveActivity","stopLiveActivity","updateLiveActivity","useLiveActivity","clearPreloadedImages","preloadImages","reloadLiveActivities","assertRunningOnApple","enableWidgetHotReload","useUpdateOnHMR","clearWidgetServerCredentials","setWidgetServerCredentials","clearAllWidgets","clearWidget","getActiveWidgets","reloadWidgets","scheduleWidget","updateWidget"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,iBAAiB;AACxC,SACEC,yBAAyB,QAEpB,2CAA2C;AAClD,SAASC,UAAU,QAA8B,4BAA4B;AAC7E,SAASC,mBAAmB,QAAuC,qCAAqC;AACxG,SAAgEC,mBAAmB,QAAQ,yBAAyB;AACpH,cAAc,aAAa;AAC3B,SAASC,gBAAgB,EAAEC,UAAU,EAAEC,aAAa,QAAQ,cAAc;AAC1E,SAASC,MAAM,QAA6B,aAAa;AACzD,SACEC,oBAAoB,EAEpBC,oBAAoB,EAEpBC,iBAAiB,EAEjBC,gBAAgB,EAChBC,kBAAkB,EAElBC,eAAe,QAGV,wBAAwB;
|
|
1
|
+
{"version":3,"names":["Voltra","VoltraLiveActivityPreview","VoltraView","VoltraWidgetPreview","updateDynamicWidget","isGlassSupported","isHeadless","useIsHeadless","logger","endAllLiveActivities","isLiveActivityActive","startLiveActivity","stopLiveActivity","updateLiveActivity","useLiveActivity","getDynamicLiveActivityDefinitionIds","startDynamicLiveActivity","updateDynamicLiveActivity","useDynamicLiveActivity","clearPreloadedImages","preloadImages","reloadLiveActivities","assertRunningOnApple","enableWidgetHotReload","enableDynamicLiveActivityHotReload","useUpdateOnHMR","clearWidgetServerUpdate","getWidgetServerUpdate","setWidgetServerUpdate","clearWidgetServerCredentials","setWidgetServerCredentials","clearAllWidgets","clearWidget","getActiveWidgets","reloadWidgets","scheduleWidget","updateWidget"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,iBAAiB;AACxC,SACEC,yBAAyB,QAEpB,2CAA2C;AAClD,SAASC,UAAU,QAA8B,4BAA4B;AAC7E,SAASC,mBAAmB,QAAuC,qCAAqC;AACxG,SAAgEC,mBAAmB,QAAQ,yBAAyB;AACpH,cAAc,aAAa;AAC3B,SAASC,gBAAgB,EAAEC,UAAU,EAAEC,aAAa,QAAQ,cAAc;AAC1E,SAASC,MAAM,QAA6B,aAAa;AACzD,SACEC,oBAAoB,EAEpBC,oBAAoB,EAEpBC,iBAAiB,EAEjBC,gBAAgB,EAChBC,kBAAkB,EAElBC,eAAe,QAGV,wBAAwB;AAC/B,SACEC,mCAAmC,EACnCC,wBAAwB,EAExBC,yBAAyB,EAEzBC,sBAAsB,QAKjB,gCAAgC;AAEvC,SACEC,oBAAoB,EAEpBC,aAAa,EAEbC,oBAAoB,QACf,cAAc;AACrB,SAASC,oBAAoB,QAAQ,iCAAiC;AACtE,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,SAASC,kCAAkC,QAAQ,+CAA+C;AAClG,SAASC,cAAc,QAAQ,2BAA2B;AAC1D,cAAc,oBAAoB;AAElC,SACEC,uBAAuB,EACvBC,qBAAqB,EACrBC,qBAAqB,QAKhB,4BAA4B;AACnC,SACEC,4BAA4B,EAC5BC,0BAA0B,QAErB,iCAAiC;AAExC,SACEC,eAAe,EACfC,WAAW,EACXC,gBAAgB,EAChBC,aAAa,EAEbC,cAAc,EACdC,YAAY,QAEP,yBAAyB","ignoreList":[]}
|
|
@@ -6,7 +6,7 @@ import { addVoltraListener } from '../events.js';
|
|
|
6
6
|
import { logger } from '../logger.js';
|
|
7
7
|
import { assertRunningOnApple, useUpdateOnHMR } from '../utils/index.js';
|
|
8
8
|
import { getNativeVoltra } from '../VoltraModule.js';
|
|
9
|
-
const normalizeSharedLiveActivityOptions = options => {
|
|
9
|
+
export const normalizeSharedLiveActivityOptions = options => {
|
|
10
10
|
if (!options) return undefined;
|
|
11
11
|
const normalizedOptions = {};
|
|
12
12
|
if (options.staleDate !== undefined) {
|
|
@@ -25,7 +25,7 @@ const normalizeSharedLiveActivityOptions = options => {
|
|
|
25
25
|
}
|
|
26
26
|
return Object.keys(normalizedOptions).length > 0 ? normalizedOptions : undefined;
|
|
27
27
|
};
|
|
28
|
-
const normalizeEndLiveActivityOptions = options => {
|
|
28
|
+
export const normalizeEndLiveActivityOptions = options => {
|
|
29
29
|
if (!options?.dismissalPolicy) return undefined;
|
|
30
30
|
if (typeof options.dismissalPolicy === 'string') {
|
|
31
31
|
if (options.dismissalPolicy === 'immediate') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useRef","useState","renderLiveActivityToString","addVoltraListener","logger","assertRunningOnApple","useUpdateOnHMR","getNativeVoltra","normalizeSharedLiveActivityOptions","options","undefined","normalizedOptions","staleDate","Date","now","warn","relevanceScore","Object","keys","length","normalizeEndLiveActivityOptions","dismissalPolicy","type","date","after","useLiveActivity","variants","targetId","setTargetId","activityName","isLiveActivityActive","isActive","optionsRef","variantsRef","lastUpdateOptionsRef","current","start","id","startLiveActivity","update","updateOptions","updateLiveActivity","end","stopLiveActivity","autoStart","autoUpdate","subscription","event","activityState","remove","Promise","resolve","payload","normalizedSharedOptions","target","deepLinkUrl","channelId","endLiveActivity","endAllLiveActivities"],"sourceRoot":"../../../src","sources":["live-activity/api.ts"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAEhE,SAASC,0BAA0B,QAAyD,iBAAiB;AAE7G,SAASC,iBAAiB,QAAQ,cAAc;AAChD,SAASC,MAAM,QAAQ,cAAc;AACrC,SAASC,oBAAoB,EAAEC,cAAc,QAAQ,mBAAmB;AACxE,SAASC,eAAe,QAAQ,oBAAoB;AAmCpD,MAAMC,kCAAkC,
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useRef","useState","renderLiveActivityToString","addVoltraListener","logger","assertRunningOnApple","useUpdateOnHMR","getNativeVoltra","normalizeSharedLiveActivityOptions","options","undefined","normalizedOptions","staleDate","Date","now","warn","relevanceScore","Object","keys","length","normalizeEndLiveActivityOptions","dismissalPolicy","type","date","after","useLiveActivity","variants","targetId","setTargetId","activityName","isLiveActivityActive","isActive","optionsRef","variantsRef","lastUpdateOptionsRef","current","start","id","startLiveActivity","update","updateOptions","updateLiveActivity","end","stopLiveActivity","autoStart","autoUpdate","subscription","event","activityState","remove","Promise","resolve","payload","normalizedSharedOptions","target","deepLinkUrl","channelId","endLiveActivity","endAllLiveActivities"],"sourceRoot":"../../../src","sources":["live-activity/api.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { addVoltraListener } from '../events.js';
|
|
5
|
+
import { assertRunningOnApple, useUpdateOnHMR } from '../utils/index.js';
|
|
6
|
+
import { getNativeVoltra } from '../VoltraModule.js';
|
|
7
|
+
import { isLiveActivityActive, normalizeSharedLiveActivityOptions, stopLiveActivity } from './api.js';
|
|
8
|
+
|
|
9
|
+
/** @experimental A JSON-compatible value accepted as Dynamic Live Activity props. */
|
|
10
|
+
|
|
11
|
+
/** @experimental A complete JSON-compatible props record for a Dynamic Live Activity update. */
|
|
12
|
+
|
|
13
|
+
/** @experimental Options used to start a Dynamic Live Activity. */
|
|
14
|
+
|
|
15
|
+
/** @experimental Options used to update a Dynamic Live Activity. */
|
|
16
|
+
|
|
17
|
+
/** @experimental Options for `useDynamicLiveActivity`. */
|
|
18
|
+
|
|
19
|
+
/** @experimental Lifecycle controls returned by `useDynamicLiveActivity`. */
|
|
20
|
+
|
|
21
|
+
function serializeDynamicLiveActivityProps(props) {
|
|
22
|
+
const ancestors = new Set();
|
|
23
|
+
const validate = (value, path) => {
|
|
24
|
+
if (value === null || typeof value === 'string' || typeof value === 'boolean') return;
|
|
25
|
+
if (typeof value === 'number') {
|
|
26
|
+
if (!Number.isFinite(value)) {
|
|
27
|
+
throw new TypeError(`Dynamic Live Activity props must be JSON-compatible; ${path} is not a finite number.`);
|
|
28
|
+
}
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (Array.isArray(value)) {
|
|
32
|
+
if (ancestors.has(value)) {
|
|
33
|
+
throw new TypeError(`Dynamic Live Activity props must be JSON-compatible; ${path} contains a circular reference.`);
|
|
34
|
+
}
|
|
35
|
+
ancestors.add(value);
|
|
36
|
+
value.forEach((item, index) => validate(item, `${path}[${index}]`));
|
|
37
|
+
ancestors.delete(value);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (typeof value === 'object') {
|
|
41
|
+
const prototype = Object.getPrototypeOf(value);
|
|
42
|
+
if (prototype !== Object.prototype && prototype !== null) {
|
|
43
|
+
throw new TypeError(`Dynamic Live Activity props must be JSON-compatible; ${path} must be a plain object.`);
|
|
44
|
+
}
|
|
45
|
+
if (ancestors.has(value)) {
|
|
46
|
+
throw new TypeError(`Dynamic Live Activity props must be JSON-compatible; ${path} contains a circular reference.`);
|
|
47
|
+
}
|
|
48
|
+
ancestors.add(value);
|
|
49
|
+
for (const [key, item] of Object.entries(value)) {
|
|
50
|
+
validate(item, `${path}.${key}`);
|
|
51
|
+
}
|
|
52
|
+
ancestors.delete(value);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
throw new TypeError(`Dynamic Live Activity props must be JSON-compatible; ${path} has unsupported type ${typeof value}.`);
|
|
56
|
+
};
|
|
57
|
+
if (props === null || Array.isArray(props) || typeof props !== 'object') {
|
|
58
|
+
throw new TypeError('Dynamic Live Activity props must be a JSON-compatible record.');
|
|
59
|
+
}
|
|
60
|
+
validate(props, 'props');
|
|
61
|
+
return JSON.stringify(props);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Starts a bundled Dynamic Live Activity with a complete opaque props record.
|
|
66
|
+
* @experimental
|
|
67
|
+
*/
|
|
68
|
+
export async function startDynamicLiveActivity(definitionId, props, options) {
|
|
69
|
+
if (!assertRunningOnApple()) return '';
|
|
70
|
+
const propsJson = serializeDynamicLiveActivityProps(props);
|
|
71
|
+
const normalizedSharedOptions = normalizeSharedLiveActivityOptions(options);
|
|
72
|
+
return getNativeVoltra().startDynamicLiveActivity(definitionId, propsJson, {
|
|
73
|
+
target: 'liveActivity',
|
|
74
|
+
deepLinkUrl: options?.deepLinkUrl,
|
|
75
|
+
activityName: options?.activityName,
|
|
76
|
+
channelId: options?.channelId,
|
|
77
|
+
...normalizedSharedOptions
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Replaces a Dynamic Live Activity's complete opaque props record.
|
|
83
|
+
* @experimental
|
|
84
|
+
*/
|
|
85
|
+
export async function updateDynamicLiveActivity(activityName, props, options) {
|
|
86
|
+
if (!assertRunningOnApple()) return;
|
|
87
|
+
const propsJson = serializeDynamicLiveActivityProps(props);
|
|
88
|
+
return getNativeVoltra().updateDynamicLiveActivity(activityName, propsJson, normalizeSharedLiveActivityOptions(options) ?? {});
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Returns the Dynamic Live Activity definition IDs bundled in the installed app.
|
|
93
|
+
* @experimental
|
|
94
|
+
*/
|
|
95
|
+
export async function getDynamicLiveActivityDefinitionIds() {
|
|
96
|
+
if (!assertRunningOnApple()) return [];
|
|
97
|
+
return getNativeVoltra().getDynamicLiveActivityDefinitionIds();
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Manages the lifecycle of one Dynamic Live Activity definition.
|
|
102
|
+
*
|
|
103
|
+
* Complete props are sent on every update. In development, call
|
|
104
|
+
* `enableDynamicLiveActivityHotReload()` once in the app host to reload only
|
|
105
|
+
* the definition changed by Fast Refresh.
|
|
106
|
+
* @experimental
|
|
107
|
+
*/
|
|
108
|
+
export function useDynamicLiveActivity(definitionId, props, options) {
|
|
109
|
+
const [activityName, setActivityName] = useState(() => {
|
|
110
|
+
if (options?.activityName) {
|
|
111
|
+
return isLiveActivityActive(options.activityName) ? options.activityName : null;
|
|
112
|
+
}
|
|
113
|
+
return null;
|
|
114
|
+
});
|
|
115
|
+
const propsRef = useRef(props);
|
|
116
|
+
const optionsRef = useRef(options);
|
|
117
|
+
const lastUpdateOptionsRef = useRef(undefined);
|
|
118
|
+
useEffect(() => {
|
|
119
|
+
propsRef.current = props;
|
|
120
|
+
}, [props]);
|
|
121
|
+
useEffect(() => {
|
|
122
|
+
optionsRef.current = options;
|
|
123
|
+
}, [options]);
|
|
124
|
+
useUpdateOnHMR();
|
|
125
|
+
const start = useCallback(async startOptions => {
|
|
126
|
+
const id = await startDynamicLiveActivity(definitionId, propsRef.current, {
|
|
127
|
+
...optionsRef.current,
|
|
128
|
+
...startOptions
|
|
129
|
+
});
|
|
130
|
+
setActivityName(id);
|
|
131
|
+
}, [definitionId]);
|
|
132
|
+
const update = useCallback(async updateOptions => {
|
|
133
|
+
if (!activityName) return;
|
|
134
|
+
const mergedOptions = {
|
|
135
|
+
...optionsRef.current,
|
|
136
|
+
...updateOptions
|
|
137
|
+
};
|
|
138
|
+
lastUpdateOptionsRef.current = mergedOptions;
|
|
139
|
+
await updateDynamicLiveActivity(activityName, propsRef.current, mergedOptions);
|
|
140
|
+
}, [activityName]);
|
|
141
|
+
const end = useCallback(async endOptions => {
|
|
142
|
+
if (!activityName) return;
|
|
143
|
+
await stopLiveActivity(activityName, endOptions);
|
|
144
|
+
setActivityName(null);
|
|
145
|
+
}, [activityName]);
|
|
146
|
+
useEffect(() => {
|
|
147
|
+
if (options?.autoStart) void start();
|
|
148
|
+
}, [options?.autoStart, start]);
|
|
149
|
+
useEffect(() => {
|
|
150
|
+
if (options?.autoUpdate) void update(lastUpdateOptionsRef.current);
|
|
151
|
+
}, [options?.autoUpdate, props, update]);
|
|
152
|
+
useEffect(() => {
|
|
153
|
+
if (!activityName) return;
|
|
154
|
+
const subscription = addVoltraListener('stateChange', event => {
|
|
155
|
+
if (event.activityName !== activityName) return;
|
|
156
|
+
if (event.activityState === 'dismissed' || event.activityState === 'ended') setActivityName(null);
|
|
157
|
+
});
|
|
158
|
+
return () => subscription.remove();
|
|
159
|
+
}, [activityName]);
|
|
160
|
+
return {
|
|
161
|
+
start,
|
|
162
|
+
update,
|
|
163
|
+
end,
|
|
164
|
+
isActive: activityName !== null
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=dynamic-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useRef","useState","addVoltraListener","assertRunningOnApple","useUpdateOnHMR","getNativeVoltra","isLiveActivityActive","normalizeSharedLiveActivityOptions","stopLiveActivity","serializeDynamicLiveActivityProps","props","ancestors","Set","validate","value","path","Number","isFinite","TypeError","Array","isArray","has","add","forEach","item","index","delete","prototype","Object","getPrototypeOf","key","entries","JSON","stringify","startDynamicLiveActivity","definitionId","options","propsJson","normalizedSharedOptions","target","deepLinkUrl","activityName","channelId","updateDynamicLiveActivity","getDynamicLiveActivityDefinitionIds","useDynamicLiveActivity","setActivityName","propsRef","optionsRef","lastUpdateOptionsRef","undefined","current","start","startOptions","id","update","updateOptions","mergedOptions","end","endOptions","autoStart","autoUpdate","subscription","event","activityState","remove","isActive"],"sourceRoot":"../../../src","sources":["live-activity/dynamic-api.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TurboModuleRegistry","getNativeVoltra","voltraModule","get","Error"],"sourceRoot":"../../../src","sources":["native/NativeVoltra.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;
|
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","getNativeVoltra","voltraModule","get","Error"],"sourceRoot":"../../../src","sources":["native/NativeVoltra.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AAqIlD,OAAO,SAASC,eAAeA,CAAA,EAAS;EACtC,MAAMC,YAAY,GAAGF,mBAAmB,CAACG,GAAG,CAAO,cAAc,CAAC;EAElE,IAAID,YAAY,IAAI,IAAI,EAAE;IACxB,MAAM,IAAIE,KAAK,CAAC,+BAA+B,CAAC;EAClD;EAEA,OAAOF,YAAY;AACrB","ignoreList":[]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { getFastRefreshHub } from '@use-voltra/ios';
|
|
4
|
+
import { getNativeVoltra } from '../VoltraModule.js';
|
|
5
|
+
/**
|
|
6
|
+
* Reload Dynamic Live Activities after a Metro Fast Refresh patch. When Metro
|
|
7
|
+
* re-evaluates a generated definition entry, only that definition is reloaded.
|
|
8
|
+
* Component-only refresh boundaries do not re-evaluate their importer, so those
|
|
9
|
+
* patches fall back to reloading every Dynamic Live Activity definition.
|
|
10
|
+
* Legacy activities and Dynamic Widgets are unaffected.
|
|
11
|
+
*
|
|
12
|
+
* Subscribes to the shared {@link getFastRefreshHub} so multiple `__accept`
|
|
13
|
+
* calls from one save collapse into a single native reload.
|
|
14
|
+
*/
|
|
15
|
+
export function enableDynamicLiveActivityHotReload() {
|
|
16
|
+
if (!__DEV__) return () => {};
|
|
17
|
+
const hub = getFastRefreshHub();
|
|
18
|
+
const previousDefinitionUpdated = global.__voltraDynamicLiveActivityDefinitionUpdated;
|
|
19
|
+
const updatedDefinitionIds = new Set();
|
|
20
|
+
global.__voltraDynamicLiveActivityDefinitionUpdated = definitionId => {
|
|
21
|
+
// A generated entry re-evaluated inside a patch: batch it so the debounced
|
|
22
|
+
// flush reloads each changed definition exactly once. A signal that arrives
|
|
23
|
+
// outside a patch (the first require of a definition) has no flush coming,
|
|
24
|
+
// so reload it immediately.
|
|
25
|
+
if (hub.isAccepting) {
|
|
26
|
+
updatedDefinitionIds.add(definitionId);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
void getNativeVoltra().reloadDynamicLiveActivities([definitionId]);
|
|
30
|
+
};
|
|
31
|
+
const unsubscribe = hub.onPatch(() => {
|
|
32
|
+
const definitionIds = Array.from(updatedDefinitionIds);
|
|
33
|
+
updatedDefinitionIds.clear();
|
|
34
|
+
// No definition re-evaluated during this patch: a component-only boundary
|
|
35
|
+
// changed, so fall back to reloading every definition (null).
|
|
36
|
+
void getNativeVoltra().reloadDynamicLiveActivities(definitionIds.length > 0 ? definitionIds : null);
|
|
37
|
+
});
|
|
38
|
+
return () => {
|
|
39
|
+
unsubscribe();
|
|
40
|
+
global.__voltraDynamicLiveActivityDefinitionUpdated = previousDefinitionUpdated;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=enableDynamicLiveActivityHotReload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getFastRefreshHub","getNativeVoltra","enableDynamicLiveActivityHotReload","__DEV__","hub","previousDefinitionUpdated","global","__voltraDynamicLiveActivityDefinitionUpdated","updatedDefinitionIds","Set","definitionId","isAccepting","add","reloadDynamicLiveActivities","unsubscribe","onPatch","definitionIds","Array","from","clear","length"],"sourceRoot":"../../../src","sources":["utils/enableDynamicLiveActivityHotReload.ts"],"mappings":";;AAAA,SAASA,iBAAiB,QAAQ,iBAAiB;AAEnD,SAASC,eAAe,QAAQ,oBAAoB;AAMpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,kCAAkCA,CAAA,EAAe;EAC/D,IAAI,CAACC,OAAO,EAAE,OAAO,MAAM,CAAC,CAAC;EAE7B,MAAMC,GAAG,GAAGJ,iBAAiB,CAAC,CAAC;EAC/B,MAAMK,yBAAyB,GAAGC,MAAM,CAACC,4CAA4C;EACrF,MAAMC,oBAAoB,GAAG,IAAIC,GAAG,CAAS,CAAC;EAE9CH,MAAM,CAACC,4CAA4C,GAAIG,YAAY,IAAK;IACtE;IACA;IACA;IACA;IACA,IAAIN,GAAG,CAACO,WAAW,EAAE;MACnBH,oBAAoB,CAACI,GAAG,CAACF,YAAY,CAAC;MACtC;IACF;IACA,KAAKT,eAAe,CAAC,CAAC,CAACY,2BAA2B,CAAC,CAACH,YAAY,CAAC,CAAC;EACpE,CAAC;EAED,MAAMI,WAAW,GAAGV,GAAG,CAACW,OAAO,CAAC,MAAM;IACpC,MAAMC,aAAa,GAAGC,KAAK,CAACC,IAAI,CAACV,oBAAoB,CAAC;IACtDA,oBAAoB,CAACW,KAAK,CAAC,CAAC;IAC5B;IACA;IACA,KAAKlB,eAAe,CAAC,CAAC,CAACY,2BAA2B,CAACG,aAAa,CAACI,MAAM,GAAG,CAAC,GAAGJ,aAAa,GAAG,IAAI,CAAC;EACrG,CAAC,CAAC;EAEF,OAAO,MAAM;IACXF,WAAW,CAAC,CAAC;IACbR,MAAM,CAACC,4CAA4C,GAAGF,yBAAyB;EACjF,CAAC;AACH","ignoreList":[]}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import { getFastRefreshHub } from '@use-voltra/ios';
|
|
3
4
|
import { reloadWidgets } from '../widgets/widget-api.js';
|
|
5
|
+
|
|
4
6
|
/**
|
|
5
7
|
* Trigger `reloadWidgets()` on every Metro Fast Refresh patch (DEV only).
|
|
6
8
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
+
* Subscribes to the shared {@link getFastRefreshHub}, which wraps the global
|
|
10
|
+
* `__accept` callback Metro fires when a Fast Refresh patch lands in the host
|
|
11
|
+
* app's JS runtime. On each debounced patch it calls
|
|
9
12
|
* `WidgetCenter.shared.reloadAllTimelines()` so WidgetKit re-invokes each widget
|
|
10
13
|
* Provider, which re-fetches the freshest bundle from Metro and renders the
|
|
11
14
|
* updated UI.
|
|
@@ -16,20 +19,15 @@ import { reloadWidgets } from '../widgets/widget-api.js';
|
|
|
16
19
|
* workflow the dev still relies on WidgetKit's natural lifecycle refresh on
|
|
17
20
|
* app foreground.
|
|
18
21
|
*
|
|
19
|
-
* Call once at app startup. Returns `dispose()` to
|
|
20
|
-
*
|
|
22
|
+
* Call once at app startup. Returns `dispose()` to unsubscribe (rarely needed
|
|
23
|
+
* in practice). No-op in release builds.
|
|
21
24
|
*/
|
|
22
25
|
export function enableWidgetHotReload() {
|
|
23
26
|
if (!__DEV__) {
|
|
24
27
|
return () => {};
|
|
25
28
|
}
|
|
26
|
-
|
|
27
|
-
global['__accept'] = (...args) => {
|
|
29
|
+
return getFastRefreshHub().onPatch(() => {
|
|
28
30
|
void reloadWidgets();
|
|
29
|
-
|
|
30
|
-
};
|
|
31
|
-
return () => {
|
|
32
|
-
global['__accept'] = oldAccept;
|
|
33
|
-
};
|
|
31
|
+
});
|
|
34
32
|
}
|
|
35
33
|
//# sourceMappingURL=enableWidgetHotReload.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["reloadWidgets","enableWidgetHotReload","__DEV__","
|
|
1
|
+
{"version":3,"names":["getFastRefreshHub","reloadWidgets","enableWidgetHotReload","__DEV__","onPatch"],"sourceRoot":"../../../src","sources":["utils/enableWidgetHotReload.ts"],"mappings":";;AAAA,SAASA,iBAAiB,QAAQ,iBAAiB;AAEnD,SAASC,aAAa,QAAQ,0BAA0B;;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,qBAAqBA,CAAA,EAAe;EAClD,IAAI,CAACC,OAAO,EAAE;IACZ,OAAO,MAAM,CAAC,CAAC;EACjB;EAEA,OAAOH,iBAAiB,CAAC,CAAC,CAACI,OAAO,CAAC,MAAM;IACvC,KAAKH,aAAa,CAAC,CAAC;EACtB,CAAC,CAAC;AACJ","ignoreList":[]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import { getFastRefreshHub } from '@use-voltra/ios';
|
|
3
4
|
import { useEffect, useState } from 'react';
|
|
4
5
|
export const useUpdateOnHMR = () => {
|
|
5
6
|
const [, forceUpdate] = useState(0);
|
|
@@ -7,14 +8,9 @@ export const useUpdateOnHMR = () => {
|
|
|
7
8
|
if (!__DEV__) {
|
|
8
9
|
return;
|
|
9
10
|
}
|
|
10
|
-
|
|
11
|
-
global['__accept'] = (...args) => {
|
|
11
|
+
return getFastRefreshHub().onPatch(() => {
|
|
12
12
|
forceUpdate(prev => prev + 1);
|
|
13
|
-
|
|
14
|
-
};
|
|
15
|
-
return () => {
|
|
16
|
-
global['__accept'] = oldAccept;
|
|
17
|
-
};
|
|
13
|
+
});
|
|
18
14
|
}, []);
|
|
19
15
|
};
|
|
20
16
|
//# sourceMappingURL=useUpdateOnHMR.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useState","useUpdateOnHMR","forceUpdate","__DEV__","
|
|
1
|
+
{"version":3,"names":["getFastRefreshHub","useEffect","useState","useUpdateOnHMR","forceUpdate","__DEV__","onPatch","prev"],"sourceRoot":"../../../src","sources":["utils/useUpdateOnHMR.ts"],"mappings":";;AAAA,SAASA,iBAAiB,QAAQ,iBAAiB;AACnD,SAASC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAE3C,OAAO,MAAMC,cAAc,GAAGA,CAAA,KAAM;EAClC,MAAM,GAAGC,WAAW,CAAC,GAAGF,QAAQ,CAAC,CAAC,CAAC;EAEnCD,SAAS,CAAC,MAAM;IACd,IAAI,CAACI,OAAO,EAAE;MACZ;IACF;IAEA,OAAOL,iBAAiB,CAAC,CAAC,CAACM,OAAO,CAAC,MAAM;MACvCF,WAAW,CAAEG,IAAI,IAAKA,IAAI,GAAG,CAAC,CAAC;IACjC,CAAC,CAAC;EACJ,CAAC,EAAE,EAAE,CAAC;AACR,CAAC","ignoreList":[]}
|
|
@@ -1,12 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { getNativeVoltra } from '../VoltraModule.js';
|
|
4
|
+
/**
|
|
5
|
+
* @deprecated Use {@link setWidgetServerUpdate} with an `Authorization` header. This writes the
|
|
6
|
+
* same stored credentials and keeps the same replace-everything semantics, so migrating is a
|
|
7
|
+
* one-line change; it will be removed in a future major.
|
|
8
|
+
*/
|
|
4
9
|
export async function setWidgetServerCredentials(credentials) {
|
|
5
10
|
if (!credentials.token) {
|
|
6
11
|
throw new Error('[Voltra][iOS] setWidgetServerCredentials: token is required');
|
|
7
12
|
}
|
|
8
13
|
return getNativeVoltra().setWidgetServerCredentials(credentials);
|
|
9
14
|
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @deprecated Use {@link clearWidgetServerUpdate} instead.
|
|
18
|
+
*/
|
|
10
19
|
export async function clearWidgetServerCredentials() {
|
|
11
20
|
return getNativeVoltra().clearWidgetServerCredentials();
|
|
12
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getNativeVoltra","setWidgetServerCredentials","credentials","token","Error","clearWidgetServerCredentials"],"sourceRoot":"../../../src","sources":["widgets/server-credentials.ts"],"mappings":";;AACA,SAASA,eAAe,QAAQ,oBAAoB;AAIpD,OAAO,eAAeC,0BAA0BA,CAACC,WAAoC,EAAiB;EACpG,IAAI,CAACA,WAAW,CAACC,KAAK,EAAE;IACtB,MAAM,IAAIC,KAAK,CAAC,6DAA6D,CAAC;EAChF;EAEA,OAAOJ,eAAe,CAAC,CAAC,CAACC,0BAA0B,CAACC,WAAW,CAAC;AAClE;
|
|
1
|
+
{"version":3,"names":["getNativeVoltra","setWidgetServerCredentials","credentials","token","Error","clearWidgetServerCredentials"],"sourceRoot":"../../../src","sources":["widgets/server-credentials.ts"],"mappings":";;AACA,SAASA,eAAe,QAAQ,oBAAoB;AAIpD;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeC,0BAA0BA,CAACC,WAAoC,EAAiB;EACpG,IAAI,CAACA,WAAW,CAACC,KAAK,EAAE;IACtB,MAAM,IAAIC,KAAK,CAAC,6DAA6D,CAAC;EAChF;EAEA,OAAOJ,eAAe,CAAC,CAAC,CAACC,0BAA0B,CAACC,WAAW,CAAC;AAClE;;AAEA;AACA;AACA;AACA,OAAO,eAAeG,4BAA4BA,CAAA,EAAkB;EAClE,OAAOL,eAAe,CAAC,CAAC,CAACK,4BAA4B,CAAC,CAAC;AACzD","ignoreList":[]}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { getNativeVoltra } from '../VoltraModule.js';
|
|
4
|
+
/**
|
|
5
|
+
* Overrides a server-driven widget's `serverUpdate` settings at runtime.
|
|
6
|
+
*
|
|
7
|
+
* The `serverUpdate` entry in app.json supplies the defaults; this replaces any of them for one
|
|
8
|
+
* widget, or for every server-driven widget when no `widgetId` is given. A widget-scoped call wins
|
|
9
|
+
* over a global one, and `headers` and `query` merge per key across the two.
|
|
10
|
+
*
|
|
11
|
+
* Each call replaces the whole layer it writes, so pass every field you want to keep. Setting
|
|
12
|
+
* anything reschedules the widgets it affects and fetches once immediately.
|
|
13
|
+
*
|
|
14
|
+
* @example Point a widget at the tenant's own backend once the user has logged in.
|
|
15
|
+
* ```ts
|
|
16
|
+
* await setWidgetServerUpdate(
|
|
17
|
+
* { url: `https://${tenant}.example.com/widgets/portfolio`, headers: { Authorization: `Bearer ${token}` } },
|
|
18
|
+
* { widgetId: 'portfolio' }
|
|
19
|
+
* )
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @example Take a widget over and drive it from the app until you hand it back.
|
|
23
|
+
* ```ts
|
|
24
|
+
* await setWidgetServerUpdate({ enabled: false }, { widgetId: 'portfolio' })
|
|
25
|
+
* await updateDynamicWidget('portfolio', localProps)
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @throws if the widget has no `serverUpdate` in app.json, if the URL is not https (plain http is
|
|
29
|
+
* allowed only in a debug build, and only for a local dev host), or if `query` names one of the
|
|
30
|
+
* parameters Voltra already sends.
|
|
31
|
+
*/
|
|
32
|
+
export async function setWidgetServerUpdate(settings, options) {
|
|
33
|
+
return getNativeVoltra().setWidgetServerUpdate(JSON.stringify(settings ?? {}), options?.widgetId ?? null);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Drops the runtime settings for one widget, or the global ones when no `widgetId` is given, so
|
|
38
|
+
* the widget falls back to what app.json configured.
|
|
39
|
+
*
|
|
40
|
+
* Clearing the global settings is the logout gesture: along with the settings it drops what the
|
|
41
|
+
* server last sent for every server-driven widget, so a Dynamic Widget goes back to `{}` with
|
|
42
|
+
* `env.serverUpdate.status` of `never` rather than showing the previous account's data. Credentials
|
|
43
|
+
* set with the deprecated `setWidgetServerCredentials` are stored separately — clear those with
|
|
44
|
+
* `clearWidgetServerCredentials`.
|
|
45
|
+
*/
|
|
46
|
+
export async function clearWidgetServerUpdate(options) {
|
|
47
|
+
return getNativeVoltra().clearWidgetServerUpdate(options?.widgetId ?? null);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Reads a widget's `serverUpdate` settings back, without reasoning about what was set where.
|
|
52
|
+
*
|
|
53
|
+
* With a `widgetId`, this is the fully resolved settings that widget would fetch with right now:
|
|
54
|
+
* every layer flattened and app.json's defaults applied — `null` if the widget is not
|
|
55
|
+
* server-driven. Without one, this is the raw contents of the global layer only — what the last
|
|
56
|
+
* `setWidgetServerUpdate(settings)` call (with no `widgetId`) wrote, with no defaults applied and
|
|
57
|
+
* every field optional — `null` if nothing has been set globally.
|
|
58
|
+
*
|
|
59
|
+
* @example Check what a widget is about to fetch from.
|
|
60
|
+
* ```ts
|
|
61
|
+
* const snapshot = await getWidgetServerUpdate({ widgetId: 'portfolio' })
|
|
62
|
+
* if (snapshot?.enabled) {
|
|
63
|
+
* console.log(`portfolio fetches ${snapshot.url} every ${snapshot.intervalMinutes}m`)
|
|
64
|
+
* }
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
|
|
68
|
+
export async function getWidgetServerUpdate(options) {
|
|
69
|
+
const json = await getNativeVoltra().getWidgetServerUpdate(options?.widgetId ?? null);
|
|
70
|
+
return json == null ? null : JSON.parse(json);
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=server-update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getNativeVoltra","setWidgetServerUpdate","settings","options","JSON","stringify","widgetId","clearWidgetServerUpdate","getWidgetServerUpdate","json","parse"],"sourceRoot":"../../../src","sources":["widgets/server-update.ts"],"mappings":";;AACA,SAASA,eAAe,QAAQ,oBAAoB;AASpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeC,qBAAqBA,CACzCC,QAAoC,EACpCC,OAAmC,EACpB;EACf,OAAOH,eAAe,CAAC,CAAC,CAACC,qBAAqB,CAACG,IAAI,CAACC,SAAS,CAACH,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAEC,OAAO,EAAEG,QAAQ,IAAI,IAAI,CAAC;AAC3G;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeC,uBAAuBA,CAACJ,OAAmC,EAAiB;EAChG,OAAOH,eAAe,CAAC,CAAC,CAACO,uBAAuB,CAACJ,OAAO,EAAEG,QAAQ,IAAI,IAAI,CAAC;AAC7E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,OAAO,eAAeE,qBAAqBA,CACzCL,OAAmC,EACsC;EACzE,MAAMM,IAAI,GAAG,MAAMT,eAAe,CAAC,CAAC,CAACQ,qBAAqB,CAACL,OAAO,EAAEG,QAAQ,IAAI,IAAI,CAAC;EACrF,OAAOG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAGL,IAAI,CAACM,KAAK,CAACD,IAAI,CAAC;AAC/C","ignoreList":[]}
|