import FirebaseFirestore import FirebaseAuth // MARK: - CLOUD ENGINE class CloudEngine { static var db: Firestore? { return FirebaseApp.app() != nil ? Firestore.firestore() : nil } static func signInSilently() { guard FirebaseApp.app() != nil else { return } if Auth.auth().currentUser == nil { Auth.auth().signInAnonymously() } } static func save(card: SavedCard) async { guard let db = db, let uid = Auth.auth().currentUser?.uid else { return } let data: [String: Any] = [ "name": card.name, "set": card.setCode, "num": card.collectorNumber, "val": card.currentValuation ?? 0.0, "cond": card.condition, "foil": card.foilType, "coll": card.collectionName, "loc": card.storageLocation, "grade": card.grade ?? "", "svc": card.gradingService ?? "", "cert": card.certNumber ?? "", "date": card.dateAdded, "curr": card.currencyCode ?? "USD", "rarity": card.rarity ?? "", "colors": card.colorIdentity ?? [], "ser": card.isSerialized ?? false, "img": card.imageFileName, "custom": card.isCustomValuation ] do { try await db.collection("users").document(uid).collection("inventory").document(card.id.uuidString).setData(data, merge: true) } catch { print("Cloud Save Error: \(error)") } } static func delete(card: SavedCard) async { guard let db = db, let uid = Auth.auth().currentUser?.uid else { return } do { try await db.collection("users").document(uid).collection("inventory").document(card.id.uuidString).delete() } catch { print("Cloud Delete Error: \(error)") } } }