[🐛] 서버 연결 안될 시 처리하는 방법 수정

This commit is contained in:
김선규 2025-04-02 17:22:18 +09:00
parent aa55b5463d
commit 46be2a0299
6 changed files with 55 additions and 27 deletions

View File

@ -9,10 +9,10 @@ import SwiftUI
struct SelectAcademyView: View {
@EnvironmentObject var appVM: AppViewModel
@StateObject var saVM: SelectAcademyViewModel
@StateObject var vm: SelectAcademyViewModel
init(_ appVM: AppViewModel) {
_saVM = StateObject(wrappedValue: SelectAcademyViewModel(appVM))
_vm = StateObject(wrappedValue: SelectAcademyViewModel(appVM))
}
@State private var scrollOffset: CGPoint = .zero
@ -33,11 +33,12 @@ struct SelectAcademyView: View {
.foregroundStyle(Color(.Text.detail))
Spacer(minLength: 1)
}
//MARK: TO-DO
//
// 1. txf
// 2.
CustomTextField(placeholder: "학원 코드 입력", text: $saVM.academyCode)
CustomTextField(placeholder: "학원 코드 입력", text: $vm.academyCode)
.frame(maxWidth: .infinity,maxHeight: 48)
.padding(EdgeInsets(top: 0, leading: 20, bottom: 0, trailing: 20))
.background {
@ -55,11 +56,12 @@ struct SelectAcademyView: View {
Spacer(minLength: 1)
}
.padding(EdgeInsets(top: 12, leading: 24, bottom: 0, trailing: 24))
if vm.academyList.count > 0 {
OffsetObservableScrollView(showsIndicators: false, scrollOffset: $scrollOffset) { proxy in
VStack(spacing: 12) {
ForEach(Array(saVM.academyList.enumerated()), id: \.offset) { index, academy in
AcademyCell(numbering: index, academy: saVM.academyList[index],selectNum: $saVM.selectNum){
saVM.toggleSelection(for: index)
ForEach(Array(vm.academyList.enumerated()), id: \.offset) { index, academy in
AcademyCell(numbering: index, academy: vm.academyList[index],selectNum: $vm.selectNum){
vm.toggleSelection(for: index)
}
}
}
@ -67,6 +69,11 @@ struct SelectAcademyView: View {
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
}
else {
EmptyBoxView(title: "등록된 학원이 없습니다.")
.padding(EdgeInsets(top: 0, leading: 24, bottom: 0, trailing: 24))
}
}
Spacer(minLength: 1)
@ -82,12 +89,12 @@ struct SelectAcademyView: View {
}
.frame(height: 56)
}
.opacity(saVM.selectNum >= 0 ? 1 : 0)
.opacity(vm.selectNum >= 0 ? 1 : 0)
.padding(EdgeInsets(top: 12, leading: 24, bottom: 12, trailing: 24))
}
.onAppear {
saVM.loadAcademy()
vm.loadAcademy()
}
}
}

View File

@ -88,6 +88,7 @@ struct SetAlertData {
button: [
ButtonType(name: "확인", role: .cancel,
function: {
printLog("alertAction 'exit' send 실행됨")
action.send("exit")
})
])

View File

@ -8,12 +8,34 @@
import SwiftUI
enum UserType: String {
case Student = "S"
case Parent = "P"
case Teacher = "T"
case Admin = "A"
case Employee = "E"
case ETC = "V"
case Admin
case Employee
case Student
case Teacher
case Parent
case ETC
var code: String {
switch self {
case .Admin: return "UT00"
case .Employee: return "UT01"
case .Student: return "UT02"
case .Teacher: return "UT03"
case .Parent: return "UT04"
case .ETC: return "UT05"
}
}
var name: String {
switch self {
case .Admin: return "A"
case .Employee: return "E"
case .Student: return "S"
case .Teacher: return "T"
case .Parent: return "P"
case .ETC: return "V"
}
}
}
struct SummaryUser {

View File

@ -21,18 +21,19 @@ class IntroViewModel: ObservableObject {
}
func appStart() {
//#if LOCAL
// pathName = .Login
//#else
subscribeAlertAction()
searchHeader()
.flatMap { success -> Future<VersionData, Error> in
return self.loadVersion()
}
.sink { completion in
.sink { [weak self] completion in
guard let self = self else {return}
switch completion {
case .failure(let error):
//
printLog(error)
self.appVM.alertData = SetAlertData().setServerError(action: appVM.alertAction)
self.appVM.showAlert.toggle()
case .finished: break
}
} receiveValue: { [weak self] version in
@ -81,8 +82,6 @@ class IntroViewModel: ObservableObject {
let request = APIRequest(path: "/api/v1/in/app",
parameters: ["type": "I", "specific": deviceId, "project": bundleId],
decoding: APIResponse<Header>.self)
appVM.apiManager.loadAPIData(request)
.sink { completion in
switch completion {

View File

@ -68,10 +68,9 @@ class RegisterViewModel: ObservableObject {
param["name"] = "\(nameText)"
if changeDate { param["birth"] = "\(selectDate.convertString("yyyy-MM-dd"))"}
param["type"] = "UT02"
param["type"] = UserType.ETC.code //"UT05" //
if let deviceId = await UIDevice.current.identifierForVendor?.uuidString,
let bundleId = Bundle.main.bundleIdentifier {
if let deviceId = await UIDevice.current.identifierForVendor?.uuidString {
param["device_id"] = "\(deviceId)"
}