AcaMate_iOS/AcaMate/3. ViewModel/SelectAcademyViewModel.swift

49 lines
1.5 KiB
Swift

//
// SelectAcademyViewModel.swift
// AcaMate
//
// Created by TAnine on 2/19/25.
//
import SwiftUI
import Combine
class SelectAcademyViewModel: ObservableObject {
private var cancellables: Set<AnyCancellable> = []
@Published var academyCode: String = ""
@Published var academyList: [AcademyName] = []
@Published var selectNum: Int = -1
func loadAcademy() {
@UserDefault(key: "token", defaultValue: "accToken") var token
@UserDefault(key: "refresh", defaultValue: "refreshToken") var refresh
APIManager.shared.loadAPIData(url: "\(API_URL)",
path: "/api/v1/in/user/academy",
method: .get,
parameters: ["token": token, "refresh": refresh],
decodingType: APIResponse<[AcademyName]>.self)
.sink { completion in
switch completion {
case .failure(let error):
printLog("\(error)")
case .finished:
break
}
} receiveValue: { [weak self] response in
guard let self = self else {return}
guard let academyNames = response as? APIResponse<[AcademyName]> else {return}
guard let academyList = academyNames.data else { return }
self.academyList = academyList
}
.store(in: &cancellables)
}
func toggleSelection(for index: Int){
if selectNum == index {
selectNum = -1
} else {
selectNum = index
}}
}