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

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

View File

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

View File

@ -8,12 +8,34 @@
import SwiftUI import SwiftUI
enum UserType: String { enum UserType: String {
case Student = "S" case Admin
case Parent = "P" case Employee
case Teacher = "T" case Student
case Admin = "A" case Teacher
case Employee = "E" case Parent
case ETC = "V" 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 { struct SummaryUser {

View File

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

View File

@ -68,10 +68,9 @@ class RegisterViewModel: ObservableObject {
param["name"] = "\(nameText)" param["name"] = "\(nameText)"
if changeDate { param["birth"] = "\(selectDate.convertString("yyyy-MM-dd"))"} 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, if let deviceId = await UIDevice.current.identifierForVendor?.uuidString {
let bundleId = Bundle.main.bundleIdentifier {
param["device_id"] = "\(deviceId)" param["device_id"] = "\(deviceId)"
} }