Replace the buggy temp file polling mechanism with direct native-to-JS communication via custom Capacitor plugins for iOS and Android. This eliminates race conditions, file management complexity, and polling overhead. BREAKING CHANGE: Removes backward compatibility with temp file approach. Android minSdkVersion upgraded from 22 to 23. Changes: - iOS: Created SharedImagePlugin (CAPBridgedPlugin) and SharedImageUtility - Uses App Group UserDefaults for data sharing between extension and app - Implements getSharedImage() and hasSharedImage() methods - Removes temp file writing/reading logic from AppDelegate - Android: Created SharedImagePlugin with @CapacitorPlugin annotation - Uses SharedPreferences for data storage instead of temp files - Implements same interface as iOS plugin - Removes temp file handling from MainActivity - TypeScript: Added plugin definitions and registration - Created SharedImagePlugin interface and web fallback - Updated main.capacitor.ts to use plugin instead of Filesystem API - Removed pollForFileExistence() and related file I/O code - Android: Upgraded minSdkVersion from 22 to 23 - Required for SharedPreferences improvements and better API support Benefits: - Eliminates race conditions from file polling - Removes file cleanup complexity - Direct native-to-JS communication (no file I/O) - Better performance (no polling overhead) - More reliable data transfer between share extension and app - Cleaner architecture with proper plugin abstraction
24 lines
585 B
TypeScript
24 lines
585 B
TypeScript
/**
|
|
* Type definitions for SharedImage plugin
|
|
*/
|
|
|
|
export interface SharedImageResult {
|
|
base64: string;
|
|
fileName: string;
|
|
}
|
|
|
|
export interface SharedImagePlugin {
|
|
/**
|
|
* Get shared image data from native layer
|
|
* Returns base64 string and fileName, or null if no image exists
|
|
* Clears the data after reading to prevent re-reading
|
|
*/
|
|
getSharedImage(): Promise<SharedImageResult | null>;
|
|
|
|
/**
|
|
* Check if shared image exists without reading it
|
|
* Useful for quick checks before calling getSharedImage()
|
|
*/
|
|
hasSharedImage(): Promise<{ hasImage: boolean }>;
|
|
}
|