mirror of
https://github.com/jakejarvis/sofa.git
synced 2026-07-14 18:15:56 -04:00
- Fix `copyBundledAsset` to accept a URI instead of a named bundle asset, resolving via `resolveAssetURL` with support for remote downloads - Read app group identifier from Info.plist (`ExpoWidgetsAppGroupIdentifier`) instead of a hardcoded string - Add `pruneWidgetImages(maxAgeSeconds)` to age-based cache cleanup, skipping the widget icon file - Add `normalizedFileName` helper to sanitize cache keys and a `log` helper with consistent prefix - Extract `getWidgetIconAsset()` into `widget-assets.ts` so the asset require is testable in isolation - Add Vitest config for the native app and unit tests covering widget data-fetch, image download, and prune logic
26 lines
829 B
TypeScript
26 lines
829 B
TypeScript
import { Platform } from "react-native";
|
|
|
|
function getModule() {
|
|
return require("./src/SofaWidgetsSupportModule").default;
|
|
}
|
|
|
|
export async function downloadWidgetImage(url: string, key: string): Promise<string | null> {
|
|
if (Platform.OS !== "ios") return null;
|
|
return getModule().downloadWidgetImage(url, key);
|
|
}
|
|
|
|
export async function copyBundledAsset(assetUri: string, key: string): Promise<string | null> {
|
|
if (Platform.OS !== "ios") return null;
|
|
return getModule().copyBundledAsset(assetUri, key);
|
|
}
|
|
|
|
export async function clearWidgetImages(): Promise<void> {
|
|
if (Platform.OS !== "ios") return;
|
|
return getModule().clearWidgetImages();
|
|
}
|
|
|
|
export async function pruneWidgetImages(maxAgeSeconds: number): Promise<void> {
|
|
if (Platform.OS !== "ios") return;
|
|
return getModule().pruneWidgetImages(maxAgeSeconds);
|
|
}
|