Files
Tonuino-Manager/Sources/TonuinoManager/App/AppModel.swift
T

41 lines
1.2 KiB
Swift

import AppKit
import Combine
import SwiftUI
@MainActor
final class AppModel: ObservableObject {
enum Section: String, CaseIterable, Identifiable, Hashable {
case library = "SD-Karte"
case cards = "NFC-Karten"
case tonuino = "TonUINO"
case settings = "Einstellungen"
var id: String { rawValue }
var icon: String {
switch self {
case .library: "sdcard"
case .cards: "wave.3.right"
case .tonuino: "slider.horizontal.3"
case .settings: "gearshape"
}
}
}
@Published var section: Section = .library
@Published var library = LibraryModel()
@Published var cards = CardModel()
@Published var status = "Bereit"
@Published var errorMessage: String?
@Published var showError = false
private var childSubscriptions = Set<AnyCancellable>()
init() {
library.objectWillChange.sink { [weak self] _ in self?.objectWillChange.send() }.store(in: &childSubscriptions)
cards.objectWillChange.sink { [weak self] _ in self?.objectWillChange.send() }.store(in: &childSubscriptions)
}
func report(_ error: Error) {
errorMessage = error.localizedDescription
showError = true
}
}