You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							163 lines
						
					
					
						
							3.7 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							163 lines
						
					
					
						
							3.7 KiB
						
					
					
				| # Camera Implementation Documentation | |
| 
 | |
| ## Overview | |
| 
 | |
| This document describes how camera functionality is implemented across the | |
| TimeSafari application. The application uses cameras for two main purposes: | |
| 
 | |
| 1. QR Code scanning | |
| 
 | |
| 2. Photo capture | |
| 
 | |
| ## Components | |
| 
 | |
| ### QRScannerDialog.vue | |
| 
 | |
| Primary component for QR code scanning in web browsers. | |
| 
 | |
| **Key Features:** | |
| 
 | |
| - Uses `qrcode-stream` for web-based QR scanning | |
| 
 | |
| - Supports both front and back cameras | |
| 
 | |
| - Provides real-time camera status feedback | |
| 
 | |
| - Implements error handling with user-friendly messages | |
| 
 | |
| - Includes camera switching functionality | |
| 
 | |
| **Camera Access Flow:** | |
| 
 | |
| 1. Checks for camera API availability | |
| 
 | |
| 2. Enumerates available video devices | |
| 
 | |
| 3. Requests camera permissions | |
| 
 | |
| 4. Initializes camera stream with preferred settings | |
| 
 | |
| 5. Handles various error conditions with specific messages | |
| 
 | |
| ### PhotoDialog.vue | |
| 
 | |
| Component for photo capture and selection. | |
| 
 | |
| **Key Features:** | |
| 
 | |
| - Cross-platform photo capture interface | |
| 
 | |
| - Image cropping capabilities | |
| 
 | |
| - File selection fallback | |
| 
 | |
| - Unified interface for different platforms | |
| 
 | |
| ## Services | |
| 
 | |
| ### QRScanner Services | |
| 
 | |
| #### WebDialogQRScanner | |
| 
 | |
| Web-based implementation of QR scanning. | |
| 
 | |
| **Key Methods:** | |
| 
 | |
| - `checkPermissions()`: Verifies camera permission status | |
| 
 | |
| - `requestPermissions()`: Requests camera access | |
| 
 | |
| - `isSupported()`: Checks for camera API support | |
| 
 | |
| - Handles various error conditions with specific messages | |
| 
 | |
| #### CapacitorQRScanner | |
| 
 | |
| Native implementation using Capacitor's MLKit. | |
| 
 | |
| **Key Features:** | |
| 
 | |
| - Uses `@capacitor-mlkit/barcode-scanning` | |
| 
 | |
| - Supports both front and back cameras | |
| 
 | |
| - Implements permission management | |
| 
 | |
| - Provides continuous scanning capability | |
| 
 | |
| ### Platform Services | |
| 
 | |
| #### WebPlatformService | |
| 
 | |
| Web-specific implementation of platform features. | |
| 
 | |
| **Camera Capabilities:** | |
| 
 | |
| - Uses HTML5 file input with capture attribute | |
| 
 | |
| - Falls back to file selection if camera unavailable | |
| 
 | |
| - Processes captured images for consistent format | |
| 
 | |
| #### CapacitorPlatformService | |
| 
 | |
| Native implementation using Capacitor. | |
| 
 | |
| **Camera Features:** | |
| 
 | |
| - Uses `Camera.getPhoto()` for native camera access | |
| 
 | |
| - Supports image editing | |
| 
 | |
| - Configures high-quality image capture | |
| 
 | |
| - Handles base64 image processing | |
| 
 | |
| #### ElectronPlatformService | |
| 
 | |
| Desktop implementation (currently unimplemented). | |
| 
 | |
| --- | |
| 
 | |
| **See also**: | |
| 
 | |
| - `.cursor/rules/features/camera_technical.mdc` for | |
| 
 | |
|   detailed technical implementation | |
| 
 | |
| - `.cursor/rules/features/camera_platforms.mdc` for platform-specific details | |
| 
 | |
| **Status**: Active camera implementation overview | |
| **Priority**: Medium | |
| **Estimated Effort**: Ongoing reference | |
| **Dependencies**: None | |
| **Stakeholders**: Development team, Camera feature team | |
| 
 | |
| - iOS and Android devices | |
| 
 | |
| - Desktop platforms | |
| 
 | |
| - Various network conditions | |
| 
 | |
| ## Model Implementation Checklist | |
| 
 | |
| ### Before Camera Implementation | |
| 
 | |
| - [ ] **Platform Analysis**: Understand camera requirements across all platforms | |
| - [ ] **Feature Planning**: Plan QR scanning and photo capture features | |
| - [ ] **Service Planning**: Plan camera service architecture | |
| - [ ] **Testing Strategy**: Plan testing across web, mobile, and desktop | |
| 
 | |
| ### During Camera Implementation | |
| 
 | |
| - [ ] **Component Development**: Implement QRScannerDialog and PhotoDialog | |
| - [ ] **Service Implementation**: Implement platform-specific camera services | |
| - [ ] **Permission Handling**: Implement proper camera permission management | |
| - [ ] **Error Handling**: Implement graceful error handling for camera failures | |
| 
 | |
| ### After Camera Implementation | |
| 
 | |
| - [ ] **Cross-Platform Testing**: Test camera functionality across all platforms | |
| - [ ] **Feature Validation**: Verify QR scanning and photo capture work correctly | |
| - [ ] **Performance Testing**: Ensure camera performance meets requirements | |
| - [ ] **Documentation Update**: Update camera implementation documentation
 | |
| 
 |