// // AppViewModel.swift // SodaLive // // Created by klaus on 3/6/25. // import Combine import AdSupport import AppTrackingTransparency final class AppViewModel: ObservableObject { private var subscription = Set() private let userRepository = UserRepository() func fetchAndUpdateIdfa() { DEBUG_LOG("fetchAndUpdateIdfa") ATTrackingManager.requestTrackingAuthorization { [unowned self] status in if status == .authorized { let idfa = ASIdentifierManager.shared().advertisingIdentifier.uuidString let pid = UserDefaults.string(forKey: .marketingPid) self.userRepository.updateMarketingInfo(request: MarketingInfoUpdateRequest(adid: idfa, pid: pid)) .sink { result in switch result { case .finished: DEBUG_LOG("finish") case .failure(let error): ERROR_LOG(error.localizedDescription) } } receiveValue: { _ in } .store(in: &self.subscription) } else { let pid = UserDefaults.string(forKey: .marketingPid) self.userRepository.updateMarketingInfo(request: MarketingInfoUpdateRequest(adid: "", pid: pid)) .sink { result in switch result { case .finished: DEBUG_LOG("finish") case .failure(let error): ERROR_LOG(error.localizedDescription) } } receiveValue: { _ in } .store(in: &self.subscription) } } } }