Files
Inkless/Inkless/App/InklessApp.swift
T

60 lines
1.3 KiB
Swift

import SwiftUI
@main
struct InklessApp: App {
@State private var model = AppModel()
var body: some Scene {
WindowGroup {
RootView()
.environment(model)
.environment(model.printer)
}
}
}
@Observable
final class AppModel {
enum Section: Hashable { case photo, text, printer }
let printer = PrinterManager()
let photo = PhotoComposer()
let text = TextComposer()
var section = Section.photo
var isPairing = false
var failure: PrintError?
private(set) var completedJobs = 0
var printable: PrintRaster? {
switch section {
case .photo: photo.raster
case .text: text.raster
case .printer: nil
}
}
init() {
DebugLaunch.apply(to: self)
}
func print() {
guard let printable else { return }
guard printer.link == .ready else {
if printer.hasRememberedPrinter {
failure = .notConnected
} else {
isPairing = true
}
return
}
printer.print(printable) { [weak self] result in
switch result {
case .success: self?.completedJobs += 1
case .failure(.cancelled): break
case let .failure(error): self?.failure = error
}
}
}
}