- App.tsx: full navigation (Auth stack + Main tabs with 5 screens) - Auth: LoginScreen, RegisterScreen, ForgotPasswordScreen - HomeScreen: dashboard with IoT metrics, weather widget, alerts, quick actions, sensors - MapScreen: interactive map with layer toggles (6 layers) - MarketplaceScreen: categories (6), products (5), search - ChatScreen: AI chat with quick prompts (4), bot responses - ProfileScreen: user info, stats, menu (9 items), logout - AlertsScreen: alert list with severity, acknowledge - SensorsScreen: sensor list with type filters (6 types), search - ZonesScreen: zone cards with stats - SettingsScreen: language picker (FR/EN/ES/DE), privacy, about - Stores: iotStore (sensors, zones, alerts), notificationStore, uiStore + i18n - Hooks: useSensors, useAlerts, useNotifications, useLocation - Components: Card, Button, LoadingSpinner, ErrorBoundary, Header - Services: iotService, notificationService (with axios API client) - Utils: formatters (temp, AQI, noise, dates), validators (email, password, IBAN) - Theme: colors.ts with full design system (Blue Ocean palette) - Ditto: fixed MongoDB connection, new JWT secrets, official gateway image
99 lines
1.6 KiB
Swift
99 lines
1.6 KiB
Swift
import AVFoundation
|
|
import ExpoModulesCore
|
|
|
|
enum WhiteBalance: Int, Enumerable {
|
|
case auto = 0
|
|
case sunny = 1
|
|
case cloudy = 2
|
|
case flash = 3
|
|
case shadow = 4
|
|
case incandescent = 5
|
|
case fluorescent = 6
|
|
|
|
func temperature() -> Float {
|
|
switch self {
|
|
case .sunny:
|
|
return 5200
|
|
case .cloudy:
|
|
return 6000
|
|
case .shadow:
|
|
return 7000
|
|
case .incandescent:
|
|
return 3000
|
|
case .fluorescent:
|
|
return 4200
|
|
default:
|
|
return 5200
|
|
}
|
|
}
|
|
}
|
|
|
|
enum CameraTypeLegacy: Int, Enumerable {
|
|
case front = 0
|
|
case back = 1
|
|
|
|
func toPosition() -> AVCaptureDevice.Position {
|
|
switch self {
|
|
case .front:
|
|
return .front
|
|
case .back:
|
|
return .back
|
|
default:
|
|
return .back
|
|
}
|
|
}
|
|
}
|
|
|
|
enum AutoFocus: Int, Enumerable {
|
|
case off = 0
|
|
case on = 1
|
|
|
|
func toAvAutoFocus() -> AVCaptureDevice.FocusMode {
|
|
switch self {
|
|
case .on:
|
|
return .autoFocus
|
|
case .off:
|
|
return .continuousAutoFocus
|
|
default:
|
|
return .autoFocus
|
|
}
|
|
}
|
|
}
|
|
|
|
enum FlashModeLegacy: Int, Enumerable {
|
|
case off = 0
|
|
case on = 1
|
|
case auto = 2
|
|
case torch = 3
|
|
}
|
|
|
|
enum VideoCodecLegacy: Int, Enumerable {
|
|
case h264 = 0
|
|
case hevc = 1
|
|
case jpeg = 2
|
|
case appleProRes422 = 3
|
|
case appleProRes4444 = 4
|
|
|
|
func codecType() -> AVVideoCodecType {
|
|
switch self {
|
|
case .h264:
|
|
return .h264
|
|
case .hevc:
|
|
return .hevc
|
|
case .jpeg:
|
|
return .jpeg
|
|
case .appleProRes422:
|
|
return .proRes422
|
|
case .appleProRes4444:
|
|
return .proRes4444
|
|
}
|
|
}
|
|
}
|
|
|
|
enum VideoStabilizationMode: Int {
|
|
case off
|
|
case standard
|
|
case cinematic
|
|
case auto
|
|
}
|