diff --git a/AcaMate.xcodeproj/project.xcworkspace/xcuserdata/tanine.xcuserdatad/UserInterfaceState.xcuserstate b/AcaMate.xcodeproj/project.xcworkspace/xcuserdata/tanine.xcuserdatad/UserInterfaceState.xcuserstate index 177637e..1587f3a 100644 Binary files a/AcaMate.xcodeproj/project.xcworkspace/xcuserdata/tanine.xcuserdatad/UserInterfaceState.xcuserstate and b/AcaMate.xcodeproj/project.xcworkspace/xcuserdata/tanine.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/AcaMate/1. View/11. Intro & Login/SelectAcademyView.swift b/AcaMate/1. View/11. Intro & Login/SelectAcademyView.swift index db6b489..dab8784 100644 --- a/AcaMate/1. View/11. Intro & Login/SelectAcademyView.swift +++ b/AcaMate/1. View/11. Intro & Login/SelectAcademyView.swift @@ -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,17 +56,23 @@ struct SelectAcademyView: View { Spacer(minLength: 1) } .padding(EdgeInsets(top: 12, leading: 24, bottom: 0, trailing: 24)) - 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) + if vm.academyList.count > 0 { + OffsetObservableScrollView(showsIndicators: false, scrollOffset: $scrollOffset) { proxy in + VStack(spacing: 12) { + ForEach(Array(vm.academyList.enumerated()), id: \.offset) { index, academy in + 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) @@ -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() } } } diff --git a/AcaMate/2. Model/Alert.swift b/AcaMate/2. Model/Alert.swift index 9ef6f6f..d09e5aa 100644 --- a/AcaMate/2. Model/Alert.swift +++ b/AcaMate/2. Model/Alert.swift @@ -88,6 +88,7 @@ struct SetAlertData { button: [ ButtonType(name: "확인", role: .cancel, function: { + printLog("alertAction 'exit' send 실행됨") action.send("exit") }) ]) diff --git a/AcaMate/2. Model/User Data.swift b/AcaMate/2. Model/User Data.swift index 2ff603c..d19b3d5 100644 --- a/AcaMate/2. Model/User Data.swift +++ b/AcaMate/2. Model/User Data.swift @@ -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 { diff --git a/AcaMate/3. ViewModel/IntroViewModel.swift b/AcaMate/3. ViewModel/IntroViewModel.swift index b7558b3..c955dba 100644 --- a/AcaMate/3. ViewModel/IntroViewModel.swift +++ b/AcaMate/3. ViewModel/IntroViewModel.swift @@ -21,18 +21,19 @@ class IntroViewModel: ObservableObject { } func appStart() { - //#if LOCAL - // pathName = .Login - //#else subscribeAlertAction() searchHeader() .flatMap { success -> Future 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
.self) - - appVM.apiManager.loadAPIData(request) .sink { completion in switch completion { diff --git a/AcaMate/3. ViewModel/RegisterViewModel.swift b/AcaMate/3. ViewModel/RegisterViewModel.swift index 56aa566..68f818f 100644 --- a/AcaMate/3. ViewModel/RegisterViewModel.swift +++ b/AcaMate/3. ViewModel/RegisterViewModel.swift @@ -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)" }