@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.
- package/build/cjs/index.js +9 -1
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/payload/component-ids.js +1 -0
- package/build/cjs/payload/component-ids.js.map +1 -1
- package/build/cjs/widgets/renderer.js +1 -1
- package/build/cjs/widgets/renderer.js.map +1 -1
- package/build/esm/index.js +3 -0
- package/build/esm/index.js.map +1 -1
- package/build/esm/payload/component-ids.js +1 -0
- package/build/esm/payload/component-ids.js.map +1 -1
- package/build/esm/widgets/renderer.js +1 -1
- package/build/esm/widgets/renderer.js.map +1 -1
- package/build/types/index.d.ts +7 -2
- package/build/types/index.d.ts.map +1 -1
- package/build/types/payload/component-ids.d.ts.map +1 -1
- package/build/types/styles/index.d.ts +1 -1
- package/build/types/styles/index.d.ts.map +1 -1
- package/build/types/styles/types.d.ts +89 -1
- package/build/types/styles/types.d.ts.map +1 -1
- package/build/types/types.d.ts +25 -1
- package/build/types/types.d.ts.map +1 -1
- package/package.json +3 -11
- package/build/cjs/VoltraModule.js +0 -6
- package/build/cjs/VoltraModule.js.map +0 -1
- package/build/cjs/client.js +0 -49
- package/build/cjs/client.js.map +0 -1
- package/build/cjs/components/VoltraLiveActivityPreview.js +0 -42
- package/build/cjs/components/VoltraLiveActivityPreview.js.map +0 -1
- package/build/cjs/components/VoltraView.js +0 -54
- package/build/cjs/components/VoltraView.js.map +0 -1
- package/build/cjs/components/VoltraWidgetPreview.js +0 -47
- package/build/cjs/components/VoltraWidgetPreview.js.map +0 -1
- package/build/cjs/events.js +0 -35
- package/build/cjs/events.js.map +0 -1
- package/build/cjs/helpers.js +0 -39
- package/build/cjs/helpers.js.map +0 -1
- package/build/cjs/live-activity/api.js +0 -277
- package/build/cjs/live-activity/api.js.map +0 -1
- package/build/cjs/logger.js +0 -36
- package/build/cjs/logger.js.map +0 -1
- package/build/cjs/preload.js +0 -115
- package/build/cjs/preload.js.map +0 -1
- package/build/cjs/utils/assertRunningOnApple.js +0 -13
- package/build/cjs/utils/assertRunningOnApple.js.map +0 -1
- package/build/cjs/utils/helpers.js +0 -39
- package/build/cjs/utils/helpers.js.map +0 -1
- package/build/cjs/utils/index.js +0 -19
- package/build/cjs/utils/index.js.map +0 -1
- package/build/cjs/utils/useUpdateOnHMR.js +0 -27
- package/build/cjs/utils/useUpdateOnHMR.js.map +0 -1
- package/build/cjs/widgets/server-credentials.js +0 -62
- package/build/cjs/widgets/server-credentials.js.map +0 -1
- package/build/cjs/widgets/widget-api.js +0 -196
- package/build/cjs/widgets/widget-api.js.map +0 -1
- package/build/esm/VoltraModule.js +0 -4
- package/build/esm/VoltraModule.js.map +0 -1
- package/build/esm/client.js +0 -10
- package/build/esm/client.js.map +0 -1
- package/build/esm/components/VoltraLiveActivityPreview.js +0 -39
- package/build/esm/components/VoltraLiveActivityPreview.js.map +0 -1
- package/build/esm/components/VoltraView.js +0 -51
- package/build/esm/components/VoltraView.js.map +0 -1
- package/build/esm/components/VoltraWidgetPreview.js +0 -44
- package/build/esm/components/VoltraWidgetPreview.js.map +0 -1
- package/build/esm/events.js +0 -29
- package/build/esm/events.js.map +0 -1
- package/build/esm/helpers.js +0 -32
- package/build/esm/helpers.js.map +0 -1
- package/build/esm/live-activity/api.js +0 -265
- package/build/esm/live-activity/api.js.map +0 -1
- package/build/esm/logger.js +0 -33
- package/build/esm/logger.js.map +0 -1
- package/build/esm/preload.js +0 -107
- package/build/esm/preload.js.map +0 -1
- package/build/esm/utils/assertRunningOnApple.js +0 -9
- package/build/esm/utils/assertRunningOnApple.js.map +0 -1
- package/build/esm/utils/helpers.js +0 -32
- package/build/esm/utils/helpers.js.map +0 -1
- package/build/esm/utils/index.js +0 -3
- package/build/esm/utils/index.js.map +0 -1
- package/build/esm/utils/useUpdateOnHMR.js +0 -23
- package/build/esm/utils/useUpdateOnHMR.js.map +0 -1
- package/build/esm/widgets/server-credentials.js +0 -55
- package/build/esm/widgets/server-credentials.js.map +0 -1
- package/build/esm/widgets/widget-api.js +0 -184
- package/build/esm/widgets/widget-api.js.map +0 -1
- package/build/types/VoltraModule.d.ts +0 -143
- package/build/types/VoltraModule.d.ts.map +0 -1
- package/build/types/client.d.ts +0 -13
- package/build/types/client.d.ts.map +0 -1
- package/build/types/components/VoltraLiveActivityPreview.d.ts +0 -28
- package/build/types/components/VoltraLiveActivityPreview.d.ts.map +0 -1
- package/build/types/components/VoltraView.d.ts +0 -43
- package/build/types/components/VoltraView.d.ts.map +0 -1
- package/build/types/components/VoltraWidgetPreview.d.ts +0 -32
- package/build/types/components/VoltraWidgetPreview.d.ts.map +0 -1
- package/build/types/events.d.ts +0 -49
- package/build/types/events.d.ts.map +0 -1
- package/build/types/helpers.d.ts +0 -12
- package/build/types/helpers.d.ts.map +0 -1
- package/build/types/live-activity/api.d.ts +0 -189
- package/build/types/live-activity/api.d.ts.map +0 -1
- package/build/types/logger.d.ts +0 -16
- package/build/types/logger.d.ts.map +0 -1
- package/build/types/preload.d.ts +0 -67
- package/build/types/preload.d.ts.map +0 -1
- package/build/types/utils/assertRunningOnApple.d.ts +0 -2
- package/build/types/utils/assertRunningOnApple.d.ts.map +0 -1
- package/build/types/utils/helpers.d.ts +0 -12
- package/build/types/utils/helpers.d.ts.map +0 -1
- package/build/types/utils/index.d.ts +0 -3
- package/build/types/utils/index.d.ts.map +0 -1
- package/build/types/utils/useUpdateOnHMR.d.ts +0 -9
- package/build/types/utils/useUpdateOnHMR.d.ts.map +0 -1
- package/build/types/widgets/server-credentials.d.ts +0 -49
- package/build/types/widgets/server-credentials.d.ts.map +0 -1
- package/build/types/widgets/widget-api.d.ts +0 -146
- 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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"}
|
package/build/esm/logger.js
DELETED
|
@@ -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
|
package/build/esm/logger.js.map
DELETED
|
@@ -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"}
|
package/build/esm/preload.js
DELETED
|
@@ -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
|
package/build/esm/preload.js.map
DELETED
|
@@ -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 +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"}
|
package/build/esm/utils/index.js
DELETED
|
@@ -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"}
|