38 lines
1.2 KiB
Swift
38 lines
1.2 KiB
Swift
import Foundation
|
|
import Observation
|
|
|
|
@Observable
|
|
@MainActor
|
|
final class WatchCardStore {
|
|
private(set) var cards: [WatchCard] = []
|
|
|
|
/// The ID of the default card (synced from iPhone)
|
|
private(set) var defaultCardID: UUID?
|
|
|
|
init() {
|
|
WatchDesign.debugLog("WatchCardStore: Initialized, waiting for cards from iPhone")
|
|
|
|
// Set up callback for when cards are received from iPhone
|
|
WatchConnectivityService.shared.onCardsReceived = { [weak self] cards in
|
|
self?.updateCards(cards)
|
|
}
|
|
}
|
|
|
|
/// The default card to display (always synced from iPhone)
|
|
var defaultCard: WatchCard? {
|
|
if let defaultCardID {
|
|
return cards.first { $0.id == defaultCardID }
|
|
}
|
|
return cards.first { $0.isDefault } ?? cards.first
|
|
}
|
|
|
|
/// Called by WatchConnectivityService when cards are received from iPhone
|
|
func updateCards(_ newCards: [WatchCard]) {
|
|
WatchDesign.debugLog("WatchCardStore: Received \(newCards.count) cards from iPhone")
|
|
cards = newCards
|
|
|
|
// Always use the iPhone's default card - the watch no longer has its own picker
|
|
defaultCardID = cards.first { $0.isDefault }?.id ?? cards.first?.id
|
|
}
|
|
}
|