@use-voltra/ios 1.3.0 → 1.4.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/build/cjs/index.js +9 -1
  2. package/build/cjs/index.js.map +1 -1
  3. package/build/cjs/payload/component-ids.js +1 -0
  4. package/build/cjs/payload/component-ids.js.map +1 -1
  5. package/build/cjs/widgets/renderer.js +1 -1
  6. package/build/cjs/widgets/renderer.js.map +1 -1
  7. package/build/esm/index.js +3 -0
  8. package/build/esm/index.js.map +1 -1
  9. package/build/esm/payload/component-ids.js +1 -0
  10. package/build/esm/payload/component-ids.js.map +1 -1
  11. package/build/esm/widgets/renderer.js +1 -1
  12. package/build/esm/widgets/renderer.js.map +1 -1
  13. package/build/types/index.d.ts +7 -2
  14. package/build/types/index.d.ts.map +1 -1
  15. package/build/types/payload/component-ids.d.ts.map +1 -1
  16. package/build/types/styles/index.d.ts +1 -1
  17. package/build/types/styles/index.d.ts.map +1 -1
  18. package/build/types/styles/types.d.ts +89 -1
  19. package/build/types/styles/types.d.ts.map +1 -1
  20. package/build/types/types.d.ts +25 -1
  21. package/build/types/types.d.ts.map +1 -1
  22. package/package.json +3 -11
  23. package/build/cjs/VoltraModule.js +0 -6
  24. package/build/cjs/VoltraModule.js.map +0 -1
  25. package/build/cjs/client.js +0 -49
  26. package/build/cjs/client.js.map +0 -1
  27. package/build/cjs/components/VoltraLiveActivityPreview.js +0 -42
  28. package/build/cjs/components/VoltraLiveActivityPreview.js.map +0 -1
  29. package/build/cjs/components/VoltraView.js +0 -54
  30. package/build/cjs/components/VoltraView.js.map +0 -1
  31. package/build/cjs/components/VoltraWidgetPreview.js +0 -47
  32. package/build/cjs/components/VoltraWidgetPreview.js.map +0 -1
  33. package/build/cjs/events.js +0 -35
  34. package/build/cjs/events.js.map +0 -1
  35. package/build/cjs/helpers.js +0 -39
  36. package/build/cjs/helpers.js.map +0 -1
  37. package/build/cjs/live-activity/api.js +0 -277
  38. package/build/cjs/live-activity/api.js.map +0 -1
  39. package/build/cjs/logger.js +0 -36
  40. package/build/cjs/logger.js.map +0 -1
  41. package/build/cjs/preload.js +0 -115
  42. package/build/cjs/preload.js.map +0 -1
  43. package/build/cjs/utils/assertRunningOnApple.js +0 -13
  44. package/build/cjs/utils/assertRunningOnApple.js.map +0 -1
  45. package/build/cjs/utils/helpers.js +0 -39
  46. package/build/cjs/utils/helpers.js.map +0 -1
  47. package/build/cjs/utils/index.js +0 -19
  48. package/build/cjs/utils/index.js.map +0 -1
  49. package/build/cjs/utils/useUpdateOnHMR.js +0 -27
  50. package/build/cjs/utils/useUpdateOnHMR.js.map +0 -1
  51. package/build/cjs/widgets/server-credentials.js +0 -62
  52. package/build/cjs/widgets/server-credentials.js.map +0 -1
  53. package/build/cjs/widgets/widget-api.js +0 -196
  54. package/build/cjs/widgets/widget-api.js.map +0 -1
  55. package/build/esm/VoltraModule.js +0 -4
  56. package/build/esm/VoltraModule.js.map +0 -1
  57. package/build/esm/client.js +0 -10
  58. package/build/esm/client.js.map +0 -1
  59. package/build/esm/components/VoltraLiveActivityPreview.js +0 -39
  60. package/build/esm/components/VoltraLiveActivityPreview.js.map +0 -1
  61. package/build/esm/components/VoltraView.js +0 -51
  62. package/build/esm/components/VoltraView.js.map +0 -1
  63. package/build/esm/components/VoltraWidgetPreview.js +0 -44
  64. package/build/esm/components/VoltraWidgetPreview.js.map +0 -1
  65. package/build/esm/events.js +0 -29
  66. package/build/esm/events.js.map +0 -1
  67. package/build/esm/helpers.js +0 -32
  68. package/build/esm/helpers.js.map +0 -1
  69. package/build/esm/live-activity/api.js +0 -265
  70. package/build/esm/live-activity/api.js.map +0 -1
  71. package/build/esm/logger.js +0 -33
  72. package/build/esm/logger.js.map +0 -1
  73. package/build/esm/preload.js +0 -107
  74. package/build/esm/preload.js.map +0 -1
  75. package/build/esm/utils/assertRunningOnApple.js +0 -9
  76. package/build/esm/utils/assertRunningOnApple.js.map +0 -1
  77. package/build/esm/utils/helpers.js +0 -32
  78. package/build/esm/utils/helpers.js.map +0 -1
  79. package/build/esm/utils/index.js +0 -3
  80. package/build/esm/utils/index.js.map +0 -1
  81. package/build/esm/utils/useUpdateOnHMR.js +0 -23
  82. package/build/esm/utils/useUpdateOnHMR.js.map +0 -1
  83. package/build/esm/widgets/server-credentials.js +0 -55
  84. package/build/esm/widgets/server-credentials.js.map +0 -1
  85. package/build/esm/widgets/widget-api.js +0 -184
  86. package/build/esm/widgets/widget-api.js.map +0 -1
  87. package/build/types/VoltraModule.d.ts +0 -143
  88. package/build/types/VoltraModule.d.ts.map +0 -1
  89. package/build/types/client.d.ts +0 -13
  90. package/build/types/client.d.ts.map +0 -1
  91. package/build/types/components/VoltraLiveActivityPreview.d.ts +0 -28
  92. package/build/types/components/VoltraLiveActivityPreview.d.ts.map +0 -1
  93. package/build/types/components/VoltraView.d.ts +0 -43
  94. package/build/types/components/VoltraView.d.ts.map +0 -1
  95. package/build/types/components/VoltraWidgetPreview.d.ts +0 -32
  96. package/build/types/components/VoltraWidgetPreview.d.ts.map +0 -1
  97. package/build/types/events.d.ts +0 -49
  98. package/build/types/events.d.ts.map +0 -1
  99. package/build/types/helpers.d.ts +0 -12
  100. package/build/types/helpers.d.ts.map +0 -1
  101. package/build/types/live-activity/api.d.ts +0 -189
  102. package/build/types/live-activity/api.d.ts.map +0 -1
  103. package/build/types/logger.d.ts +0 -16
  104. package/build/types/logger.d.ts.map +0 -1
  105. package/build/types/preload.d.ts +0 -67
  106. package/build/types/preload.d.ts.map +0 -1
  107. package/build/types/utils/assertRunningOnApple.d.ts +0 -2
  108. package/build/types/utils/assertRunningOnApple.d.ts.map +0 -1
  109. package/build/types/utils/helpers.d.ts +0 -12
  110. package/build/types/utils/helpers.d.ts.map +0 -1
  111. package/build/types/utils/index.d.ts +0 -3
  112. package/build/types/utils/index.d.ts.map +0 -1
  113. package/build/types/utils/useUpdateOnHMR.d.ts +0 -9
  114. package/build/types/utils/useUpdateOnHMR.d.ts.map +0 -1
  115. package/build/types/widgets/server-credentials.d.ts +0 -49
  116. package/build/types/widgets/server-credentials.d.ts.map +0 -1
  117. package/build/types/widgets/widget-api.d.ts +0 -146
  118. package/build/types/widgets/widget-api.d.ts.map +0 -1
@@ -1,265 +0,0 @@
1
- import { useCallback, useEffect, useRef, useState } from 'react';
2
- import { addVoltraListener } from '../events.js';
3
- import { logger } from '../logger.js';
4
- import { assertRunningOnApple, useUpdateOnHMR } from '../utils/index.js';
5
- import VoltraModule from '../VoltraModule.js';
6
- import { renderLiveActivityToString } from './renderer.js';
7
- const normalizeSharedLiveActivityOptions = (options) => {
8
- if (!options)
9
- return undefined;
10
- const normalizedOptions = {};
11
- if (options.staleDate !== undefined) {
12
- if (options.staleDate < Date.now()) {
13
- logger.warn('Ignoring staleDate because it is in the past, the Live Activity would be dismissed immediately.');
14
- }
15
- else {
16
- normalizedOptions.staleDate = options.staleDate;
17
- }
18
- }
19
- // Always include relevanceScore, defaulting to 0.0 if not provided
20
- const relevanceScore = options.relevanceScore ?? 0.0;
21
- if (relevanceScore < 0 || relevanceScore > 1) {
22
- logger.warn('Ignoring relevanceScore because it is out of range [0.0, 1.0], using default 0.0');
23
- normalizedOptions.relevanceScore = 0.0;
24
- }
25
- else {
26
- normalizedOptions.relevanceScore = relevanceScore;
27
- }
28
- return Object.keys(normalizedOptions).length > 0 ? normalizedOptions : undefined;
29
- };
30
- const normalizeEndLiveActivityOptions = (options) => {
31
- if (!options?.dismissalPolicy)
32
- return undefined;
33
- if (typeof options.dismissalPolicy === 'string') {
34
- if (options.dismissalPolicy === 'immediate') {
35
- return { dismissalPolicy: { type: 'immediate' } };
36
- }
37
- }
38
- else if (typeof options.dismissalPolicy === 'object' && 'after' in options.dismissalPolicy) {
39
- return { dismissalPolicy: { type: 'after', date: options.dismissalPolicy.after } };
40
- }
41
- // Default to immediate if unrecognized
42
- return { dismissalPolicy: { type: 'immediate' } };
43
- };
44
- /**
45
- * React hook for managing Live Activities with automatic lifecycle handling.
46
- *
47
- * @param variants - The Live Activity content variants to display
48
- * @param options - Configuration options for the hook
49
- * @returns Object with start, update, end methods and isActive state
50
- *
51
- * @example
52
- * ```tsx
53
- * import { useLiveActivity, Voltra } from 'voltra'
54
- *
55
- * const MyLiveActivity = () => {
56
- * const { start, update, end, isActive } = useLiveActivity({
57
- * minimal: <Voltra.Text>Live Activity</Voltra.Text>,
58
- * compact: <Voltra.HStack>...</Voltra.HStack>,
59
- * expanded: <Voltra.VStack>...</Voltra.VStack>
60
- * }, {
61
- * activityName: 'my-activity',
62
- * autoStart: true,
63
- * autoUpdate: true
64
- * })
65
- *
66
- * return (
67
- * <View>
68
- * <Button title={isActive ? "Stop" : "Start"} onPress={isActive ? end : start} />
69
- * </View>
70
- * )
71
- * }
72
- * ```
73
- */
74
- export const useLiveActivity = (variants, options) => {
75
- const [targetId, setTargetId] = useState(() => {
76
- if (options?.activityName) {
77
- return isLiveActivityActive(options.activityName) ? options.activityName : null;
78
- }
79
- return null;
80
- });
81
- const isActive = targetId !== null;
82
- const optionsRef = useRef(options);
83
- const variantsRef = useRef(variants);
84
- const lastUpdateOptionsRef = useRef(undefined);
85
- // Update refs when values change
86
- useEffect(() => {
87
- optionsRef.current = options;
88
- }, [options]);
89
- useEffect(() => {
90
- variantsRef.current = variants;
91
- }, [variants]);
92
- useUpdateOnHMR();
93
- const start = useCallback(async (options) => {
94
- const id = await startLiveActivity(variantsRef.current, { ...optionsRef.current, ...options });
95
- setTargetId(id);
96
- }, []);
97
- const update = useCallback(async (options) => {
98
- if (!targetId) {
99
- return;
100
- }
101
- const updateOptions = { ...optionsRef.current, ...options };
102
- lastUpdateOptionsRef.current = updateOptions;
103
- await updateLiveActivity(targetId, variantsRef.current, updateOptions);
104
- }, [targetId]);
105
- const end = useCallback(async (options) => {
106
- if (!targetId) {
107
- return;
108
- }
109
- await stopLiveActivity(targetId, options);
110
- setTargetId(null);
111
- }, [targetId]);
112
- useEffect(() => {
113
- if (!options?.autoStart) {
114
- return;
115
- }
116
- start();
117
- }, [options?.autoStart, start]);
118
- useEffect(() => {
119
- if (!options?.autoUpdate)
120
- return;
121
- update(lastUpdateOptionsRef.current);
122
- }, [options?.autoUpdate, update, variants]);
123
- useEffect(() => {
124
- if (!targetId)
125
- return;
126
- const subscription = addVoltraListener('stateChange', (event) => {
127
- if (event.activityName !== targetId)
128
- return;
129
- if (event.activityState === 'dismissed' || event.activityState === 'ended') {
130
- // Live Activity is no longer active.
131
- setTargetId(null);
132
- }
133
- });
134
- return () => subscription.remove();
135
- }, [targetId]);
136
- return {
137
- start,
138
- update,
139
- end,
140
- isActive,
141
- };
142
- };
143
- /**
144
- * Start a new Live Activity with the provided content variants.
145
- *
146
- * @param variants - The Live Activity content variants to display
147
- * @param options - Configuration options for the Live Activity
148
- * @returns Promise resolving to the activity ID
149
- *
150
- * @example
151
- * ```tsx
152
- * import { startLiveActivity, Voltra } from 'voltra'
153
- *
154
- * const activityId = await startLiveActivity({
155
- * minimal: <Voltra.Text>Live Activity</Voltra.Text>,
156
- * compact: <Voltra.HStack>...</Voltra.HStack>,
157
- * expanded: <Voltra.VStack>...</Voltra.VStack>
158
- * }, {
159
- * activityName: 'my-activity',
160
- * deepLinkUrl: '/details',
161
- * relevanceScore: 0.8
162
- * })
163
- * ```
164
- */
165
- export const startLiveActivity = async (variants, options) => {
166
- if (!assertRunningOnApple())
167
- return Promise.resolve('');
168
- const payload = renderLiveActivityToString(variants);
169
- const normalizedSharedOptions = normalizeSharedLiveActivityOptions(options);
170
- const targetId = await VoltraModule.startLiveActivity(payload, {
171
- target: 'liveActivity',
172
- deepLinkUrl: options?.deepLinkUrl,
173
- activityId: options?.activityName,
174
- channelId: options?.channelId,
175
- ...normalizedSharedOptions,
176
- });
177
- return targetId;
178
- };
179
- /**
180
- * Update an existing Live Activity with new content.
181
- *
182
- * @param targetId - The ID of the Live Activity to update
183
- * @param variants - The new Live Activity content variants
184
- * @param options - Update options like relevance score
185
- *
186
- * @example
187
- * ```tsx
188
- * import { updateLiveActivity, Voltra } from 'voltra'
189
- *
190
- * await updateLiveActivity('activity-123', {
191
- * minimal: <Voltra.Text>Updated: Live Activity</Voltra.Text>,
192
- * compact: <Voltra.HStack>...</Voltra.HStack>,
193
- * expanded: <Voltra.VStack>...</Voltra.VStack>
194
- * }, {
195
- * relevanceScore: 0.9
196
- * })
197
- * ```
198
- */
199
- export const updateLiveActivity = async (targetId, variants, options) => {
200
- if (!assertRunningOnApple())
201
- return Promise.resolve();
202
- const payload = renderLiveActivityToString(variants);
203
- const normalizedSharedOptions = normalizeSharedLiveActivityOptions(options);
204
- return VoltraModule.updateLiveActivity(targetId, payload, normalizedSharedOptions);
205
- };
206
- /**
207
- * Stop a Live Activity.
208
- *
209
- * @param targetId - The ID of the Live Activity to stop
210
- * @param options - Options for how to end the activity
211
- *
212
- * @example
213
- * ```tsx
214
- * import { stopLiveActivity } from 'voltra'
215
- *
216
- * await stopLiveActivity('activity-123', { dismissalPolicy: 'immediate' })
217
- * ```
218
- */
219
- export const stopLiveActivity = async (targetId, options) => {
220
- if (!assertRunningOnApple())
221
- return Promise.resolve();
222
- const normalizedOptions = normalizeEndLiveActivityOptions(options);
223
- return VoltraModule.endLiveActivity(targetId, normalizedOptions);
224
- };
225
- /**
226
- * Check if a Live Activity with the given name is currently active.
227
- *
228
- * @param activityName - The name of the Live Activity to check
229
- * @returns true if the activity is active, false otherwise
230
- *
231
- * @example
232
- * ```tsx
233
- * import { isLiveActivityActive } from 'voltra'
234
- *
235
- * if (isLiveActivityActive('my-activity')) {
236
- * console.log('Activity is running')
237
- * }
238
- * ```
239
- */
240
- export const isLiveActivityActive = (activityName) => {
241
- if (!assertRunningOnApple())
242
- return false;
243
- return VoltraModule.isLiveActivityActive(activityName);
244
- };
245
- /**
246
- * End all active Live Activities.
247
- *
248
- * This function stops and dismisses all currently running Live Activities in the app.
249
- * It's useful for cleanup operations, such as when the app is being closed or
250
- * when you want to reset all Live Activity states.
251
- *
252
- * @example
253
- * ```typescript
254
- * import { endAllLiveActivities } from 'voltra'
255
- *
256
- * // End all active Live Activities
257
- * await endAllLiveActivities()
258
- * ```
259
- */
260
- export async function endAllLiveActivities() {
261
- if (!assertRunningOnApple())
262
- return Promise.resolve();
263
- return VoltraModule.endAllLiveActivities();
264
- }
265
- //# sourceMappingURL=api.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/live-activity/api.ts"],"names":[],"mappings":"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"}
@@ -1,33 +0,0 @@
1
- const LEVELS = {
2
- debug: 0,
3
- info: 1,
4
- warn: 2,
5
- error: 3,
6
- };
7
- let currentLevel = __DEV__ ? 'debug' : 'info';
8
- export const logger = {
9
- debug: (message) => {
10
- if (LEVELS.debug >= LEVELS[currentLevel]) {
11
- console.log(`[Voltra] ${message}`);
12
- }
13
- },
14
- info: (message) => {
15
- if (LEVELS.info >= LEVELS[currentLevel]) {
16
- console.info(`[Voltra] ${message}`);
17
- }
18
- },
19
- warn: (message) => {
20
- if (LEVELS.warn >= LEVELS[currentLevel]) {
21
- console.warn(`[Voltra] ${message}`);
22
- }
23
- },
24
- error: (message) => {
25
- if (LEVELS.error >= LEVELS[currentLevel]) {
26
- console.error(`[Voltra] ${message}`);
27
- }
28
- },
29
- setLevel: (level) => {
30
- currentLevel = level;
31
- },
32
- };
33
- //# sourceMappingURL=logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG;IACb,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACA,CAAA;AAGV,IAAI,YAAY,GAAmB,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAA;AAE7D,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,CAAC,OAAe,EAAE,EAAE;QACzB,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,EAAE,CAAC,CAAA;QACpC,CAAC;IACH,CAAC;IACD,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE;QACxB,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,YAAY,OAAO,EAAE,CAAC,CAAA;QACrC,CAAC;IACH,CAAC;IACD,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE;QACxB,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,YAAY,OAAO,EAAE,CAAC,CAAA;QACrC,CAAC;IACH,CAAC;IACD,KAAK,EAAE,CAAC,OAAe,EAAE,EAAE;QACzB,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,KAAK,CAAC,YAAY,OAAO,EAAE,CAAC,CAAA;QACtC,CAAC;IACH,CAAC;IACD,QAAQ,EAAE,CAAC,KAAqB,EAAE,EAAE;QAClC,YAAY,GAAG,KAAK,CAAA;IACtB,CAAC;CACF,CAAA"}
@@ -1,107 +0,0 @@
1
- import { Platform } from 'react-native';
2
- import VoltraModule from './VoltraModule.js';
3
- function assertIOS(name) {
4
- const isIOS = Platform.OS === 'ios';
5
- if (!isIOS)
6
- console.error(`${name} is only available on iOS`);
7
- return isIOS;
8
- }
9
- /**
10
- * Preload images to App Group storage for use in Live Activities.
11
- *
12
- * Downloaded images are stored in shared storage accessible by both the app
13
- * and the Live Activity widget extension. Images can then be referenced using
14
- * the `assetName` property in the Image component.
15
- *
16
- * Images must be less than 4KB to comply with ActivityKit limits.
17
- *
18
- * @param images - Array of images to preload
19
- * @returns Result indicating which images succeeded or failed
20
- *
21
- * @example
22
- * ```typescript
23
- * const result = await preloadImages([
24
- * {
25
- * url: 'https://example.com/album-art.jpg',
26
- * key: 'current-album',
27
- * headers: { 'Authorization': 'Bearer token' }
28
- * }
29
- * ])
30
- *
31
- * // Use in Live Activity
32
- * <Voltra.Image source={{ assetName: 'current-album' }} />
33
- * ```
34
- */
35
- export async function preloadImages(images) {
36
- if (!assertIOS('preloadImages')) {
37
- return { succeeded: [], failed: images.map((img) => ({ key: img.key, error: 'Not available on this platform' })) };
38
- }
39
- try {
40
- return await VoltraModule.preloadImages(images);
41
- }
42
- catch (error) {
43
- return {
44
- succeeded: [],
45
- failed: images.map((img) => ({
46
- key: img.key,
47
- error: error instanceof Error ? error.message : 'Unknown error',
48
- })),
49
- };
50
- }
51
- }
52
- /**
53
- * Reload Live Activities to pick up newly preloaded images.
54
- *
55
- * This triggers an update on the specified Live Activities (or all if none specified)
56
- * with their current content state, forcing SwiftUI to re-render and load the
57
- * newly preloaded images from App Group storage.
58
- *
59
- * @param activityNames - Optional array of activity names to reload. If omitted, reloads all.
60
- *
61
- * @example
62
- * ```typescript
63
- * // Preload new image
64
- * await preloadImages([{ url: 'https://example.com/new-art.jpg', key: 'album-art' }])
65
- *
66
- * // Reload specific activity to pick up the new image
67
- * await reloadLiveActivities(['music-player'])
68
- *
69
- * // Or reload all activities
70
- * await reloadLiveActivities()
71
- * ```
72
- */
73
- export async function reloadLiveActivities(activityNames) {
74
- if (!assertIOS('reloadLiveActivities'))
75
- return;
76
- try {
77
- await VoltraModule.reloadLiveActivities(activityNames ?? null);
78
- }
79
- catch (error) {
80
- console.error('Failed to reload Live Activities:', error);
81
- }
82
- }
83
- /**
84
- * Clear preloaded images from App Group storage.
85
- *
86
- * @param keys - Optional array of image keys to clear. If omitted, clears all preloaded images.
87
- *
88
- * @example
89
- * ```typescript
90
- * // Clear specific images
91
- * await clearPreloadedImages(['album-art', 'profile-pic'])
92
- *
93
- * // Clear all preloaded images
94
- * await clearPreloadedImages()
95
- * ```
96
- */
97
- export async function clearPreloadedImages(keys) {
98
- if (!assertIOS('clearPreloadedImages'))
99
- return;
100
- try {
101
- await VoltraModule.clearPreloadedImages(keys ?? null);
102
- }
103
- catch (error) {
104
- console.error('Failed to clear preloaded images:', error);
105
- }
106
- }
107
- //# sourceMappingURL=preload.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"preload.js","sourceRoot":"","sources":["../../src/preload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAGvC,OAAO,YAAY,MAAM,mBAAmB,CAAA;AAK5C,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAA;IACnC,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,2BAA2B,CAAC,CAAA;IAC7D,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAA6B;IAC/D,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAC,CAAC,EAAE,CAAA;IACpH,CAAC;IAED,IAAI,CAAC;QACH,OAAO,MAAO,YAAoB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;IAC1D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,SAAS,EAAE,EAAE;YACb,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC3B,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAChE,CAAC,CAAC;SACJ,CAAA;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,aAAwB;IACjE,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC;QAAE,OAAM;IAE9C,IAAI,CAAC;QACH,MAAO,YAAoB,CAAC,oBAAoB,CAAC,aAAa,IAAI,IAAI,CAAC,CAAA;IACzE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAA;IAC3D,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAe;IACxD,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC;QAAE,OAAM;IAE9C,IAAI,CAAC;QACH,MAAO,YAAoB,CAAC,oBAAoB,CAAC,IAAI,IAAI,IAAI,CAAC,CAAA;IAChE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAA;IAC3D,CAAC;AACH,CAAC"}
@@ -1,9 +0,0 @@
1
- import { Platform } from 'react-native';
2
- export const assertRunningOnApple = () => {
3
- if (Platform.OS !== 'ios') {
4
- console.error(`Voltra is available only on iOS!`);
5
- return false;
6
- }
7
- return true;
8
- };
9
- //# sourceMappingURL=assertRunningOnApple.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"assertRunningOnApple.js","sourceRoot":"","sources":["../../../src/utils/assertRunningOnApple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAEvC,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAY,EAAE;IAChD,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAA;QACjD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
@@ -1,32 +0,0 @@
1
- import { Platform } from 'react-native';
2
- import VoltraModule from '../VoltraModule.js';
3
- /**
4
- * Return whether Liquid Glass APIs are supported on this device (iOS 26+).
5
- * This is a convenience gate for authoring fallbacks in JS.
6
- */
7
- export function isGlassSupported() {
8
- if (Platform.OS !== 'ios')
9
- return false;
10
- const v = Platform.Version;
11
- let major = 0;
12
- if (typeof v === 'string') {
13
- const m = parseInt(v.split('.')[0] || '0', 10);
14
- if (!Number.isNaN(m))
15
- major = m;
16
- }
17
- else if (typeof v === 'number') {
18
- major = Math.floor(v);
19
- }
20
- return major >= 26;
21
- }
22
- /**
23
- * Return whether the app was launched in the background (headless).
24
- * Returns true if the app was launched in background, false if launched in foreground.
25
- * Always returns false on non-iOS platforms.
26
- */
27
- export function isHeadless() {
28
- if (Platform.OS !== 'ios')
29
- return false;
30
- return VoltraModule.isHeadless?.() ?? false;
31
- }
32
- //# sourceMappingURL=helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/utils/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAEvC,OAAO,YAAY,MAAM,oBAAoB,CAAA;AAE7C;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK;QAAE,OAAO,KAAK,CAAA;IACvC,MAAM,CAAC,GAAQ,QAAQ,CAAC,OAAO,CAAA;IAC/B,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAA;QAC9C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,KAAK,GAAG,CAAC,CAAA;IACjC,CAAC;SAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QACjC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACvB,CAAC;IACD,OAAO,KAAK,IAAI,EAAE,CAAA;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU;IACxB,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK;QAAE,OAAO,KAAK,CAAA;IACvC,OAAO,YAAY,CAAC,UAAU,EAAE,EAAE,IAAI,KAAK,CAAA;AAC7C,CAAC"}
@@ -1,3 +0,0 @@
1
- export * from './assertRunningOnApple.js';
2
- export * from './useUpdateOnHMR.js';
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA"}
@@ -1,23 +0,0 @@
1
- import { useEffect, useState } from 'react';
2
- /**
3
- * Taps into the HMR accept function to forcefully re-render the component when any module is updated.
4
- * Is only available in development mode.
5
- */
6
- export const useUpdateOnHMR = () => {
7
- const [, forceUpdate] = useState(0);
8
- useEffect(() => {
9
- if (!__DEV__) {
10
- return;
11
- }
12
- // Override the accept function to forcefully re-render when any module is updated
13
- const oldAccept = global['__accept'];
14
- global['__accept'] = (...args) => {
15
- forceUpdate((prev) => prev + 1);
16
- oldAccept?.(...args);
17
- };
18
- return () => {
19
- global['__accept'] = oldAccept;
20
- };
21
- }, []);
22
- };
23
- //# sourceMappingURL=useUpdateOnHMR.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useUpdateOnHMR.js","sourceRoot":"","sources":["../../../src/utils/useUpdateOnHMR.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAO3C;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,MAAM,CAAC,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAEnC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAM;QACR,CAAC;QAED,kFAAkF;QAClF,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;QACpC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE;YAC/B,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;YAC/B,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,CAAA;QACtB,CAAC,CAAA;QAED,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,UAAU,CAAC,GAAG,SAAS,CAAA;QAChC,CAAC,CAAA;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;AACR,CAAC,CAAA"}
@@ -1,55 +0,0 @@
1
- import VoltraModule from '../VoltraModule.js';
2
- /**
3
- * Store server credentials for widget server-driven updates.
4
- *
5
- * On iOS, credentials are stored in the Shared Keychain (accessible by both the
6
- * main app and widget extension) with `kSecAttrAccessibleAfterFirstUnlock` to allow
7
- * background access.
8
- *
9
- * On Android, credentials are encrypted via Google Tink (AES-256-GCM) and
10
- * persisted in Jetpack DataStore. The encryption key is managed by the Android
11
- * Keystore. The WorkManager background worker can access this storage directly
12
- * since widgets are part of the main app binary.
13
- *
14
- * Call this after the user logs in to enable authenticated widget updates.
15
- *
16
- * @param credentials - The server credentials to store
17
- *
18
- * @example
19
- * ```typescript
20
- * import { setWidgetServerCredentials } from 'voltra'
21
- *
22
- * // After user login
23
- * await setWidgetServerCredentials({
24
- * token: userAccessToken,
25
- * headers: {
26
- * 'X-App-Version': '1.0.0',
27
- * }
28
- * })
29
- * ```
30
- */
31
- export async function setWidgetServerCredentials(credentials) {
32
- if (!credentials.token) {
33
- throw new Error('[Voltra][iOS] setWidgetServerCredentials: token is required');
34
- }
35
- return VoltraModule.setWidgetServerCredentials(credentials);
36
- }
37
- /**
38
- * Clear stored server credentials for widget updates.
39
- *
40
- * Call this when the user logs out to stop authenticated widget updates.
41
- * All widgets are automatically reloaded after clearing credentials so they
42
- * revert to their default/unauthenticated state.
43
- *
44
- * @example
45
- * ```typescript
46
- * import { clearWidgetServerCredentials } from 'voltra'
47
- *
48
- * // On user logout
49
- * await clearWidgetServerCredentials()
50
- * ```
51
- */
52
- export async function clearWidgetServerCredentials() {
53
- return VoltraModule.clearWidgetServerCredentials();
54
- }
55
- //# sourceMappingURL=server-credentials.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server-credentials.js","sourceRoot":"","sources":["../../../src/widgets/server-credentials.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,MAAM,oBAAoB,CAAA;AAK7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,WAAoC;IACnF,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;IAChF,CAAC;IAED,OAAO,YAAY,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAA;AAC7D,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B;IAChD,OAAO,YAAY,CAAC,4BAA4B,EAAE,CAAA;AACpD,CAAC"}