sodalive-ios/SodaLive/Sources/App/AppViewModel.swift

55 lines
2.2 KiB
Swift

//
// AppViewModel.swift
// SodaLive
//
// Created by klaus on 3/6/25.
//
import Combine
import AdSupport
import AppTrackingTransparency
final class AppViewModel: ObservableObject {
private var subscription = Set<AnyCancellable>()
private let userRepository = UserRepository()
func fetchAndUpdateIdfa() {
DEBUG_LOG("fetchAndUpdateIdfa")
ATTrackingManager.requestTrackingAuthorization { [unowned self] status in
if status == .authorized {
if !UserDefaults.string(forKey: UserDefaultsKey.token).trimmingCharacters(in: .whitespacesAndNewlines).isEmpty {
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 {
if !UserDefaults.string(forKey: UserDefaultsKey.token).trimmingCharacters(in: .whitespacesAndNewlines).isEmpty {
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)
}
}
}
}
}