mirror of
https://github.com/home-assistant/iOS.git
synced 2026-06-17 09:25:54 -05:00
This is somewhat in prep of being able to make the project file generated, but also just organizes things into more concrete directory structures.
This pulls out _all_ of the build settings from the root level, and most from the target level, into xcconfigs.
The new directory structure looks like:
- Sources
- App
- (everything from HomeAssistant/)
- WatchApp
- Shared
- MacBridge
- Extensions
- Intents
- NotificationContent
- NotificationService
- Share
- Today
- Watch
- Widgets
- Tests
- App
- UI
- Shared
Somewhat intentionally, the file structure under these is not yet standardized/organized.
The project targets are now:
- App
- WatchApp
- Shared-iOS
- Shared-watchOS
- MacBridge
- Tests-App
- Tests-UI
- Tests-Shared
- Extension-Intents
- Extension-NotificationContent
- Extension-NotificationService
- Extension-Share
- Extension-Today
- Extension-Widget
- WatchExtension-Watch
This does not yet clean up resources vs. sources, nor does it handle some of the "it's in Sources/App but it's part of Shared" crossover directory issues.
28 lines
716 B
Swift
28 lines
716 B
Swift
import Foundation
|
|
import Shared
|
|
import PromiseKit
|
|
|
|
enum CameraStreamHandlerState {
|
|
case playing
|
|
case paused
|
|
}
|
|
|
|
protocol CameraStreamHandler: AnyObject {
|
|
init(api: HomeAssistantAPI, response: StreamCameraResponse) throws
|
|
var didUpdateState: (CameraStreamHandlerState) -> Void { get set }
|
|
var promise: Promise<Void> { get }
|
|
func pause()
|
|
func play()
|
|
}
|
|
|
|
extension CameraStreamHandler {
|
|
static func aspectRatioConstraint(on view: UIView, size: CGSize) -> NSLayoutConstraint? {
|
|
guard size.height > 0 else {
|
|
return nil
|
|
}
|
|
|
|
let ratio = size.width/size.height
|
|
return view.widthAnchor.constraint(equalTo: view.heightAnchor, multiplier: ratio)
|
|
}
|
|
}
|