diff --git a/App/Sources/Application/NeedleGenerated.swift b/App/Sources/Application/NeedleGenerated.swift index 8d9f5725..d23b8b3c 100644 --- a/App/Sources/Application/NeedleGenerated.swift +++ b/App/Sources/Application/NeedleGenerated.swift @@ -715,15 +715,17 @@ private func factorydd7e28250a180554c7a0f47b58f8f304c97af4d5(_ component: Needle return InquiryListDependencyec75a7335a50ded93b28Provider(appComponent: parent1(component) as! AppComponent) } private class SchoolListDependency96b276c3342c1aca3550Provider: SchoolListDependency { - - - init() { - + var fetchSchoolListUseCase: any FetchSchoolListUseCase { + return appComponent.fetchSchoolListUseCase + } + private let appComponent: AppComponent + init(appComponent: AppComponent) { + self.appComponent = appComponent } } /// ^->AppComponent->SchoolListComponent -private func factoryd55f8188de756273ca44e3b0c44298fc1c149afb(_ component: NeedleFoundation.Scope) -> AnyObject { - return SchoolListDependency96b276c3342c1aca3550Provider() +private func factoryd55f8188de756273ca44f47b58f8f304c97af4d5(_ component: NeedleFoundation.Scope) -> AnyObject { + return SchoolListDependency96b276c3342c1aca3550Provider(appComponent: parent1(component) as! AppComponent) } private class ActivityListDependencyb8e659960978b8384f80Provider: ActivityListDependency { var activityDetailFactory: any ActivityDetailFactory { @@ -1172,7 +1174,7 @@ extension InquiryListComponent: Registration { } extension SchoolListComponent: Registration { public func registerItems() { - + keyPathToName[\SchoolListDependency.fetchSchoolListUseCase] = "fetchSchoolListUseCase-any FetchSchoolListUseCase" } } extension ActivityListComponent: Registration { @@ -1458,7 +1460,7 @@ private func registerProviderFactory(_ componentPath: String, _ factory: @escapi registerProviderFactory("^->AppComponent->SuccessChangePasswordComponent", factoryde3552d9e0f793ec8b8df47b58f8f304c97af4d5) registerProviderFactory("^->AppComponent->NewPasswordComponent", factory52985a6d5ec65d75bd97f47b58f8f304c97af4d5) registerProviderFactory("^->AppComponent->InquiryListComponent", factorydd7e28250a180554c7a0f47b58f8f304c97af4d5) - registerProviderFactory("^->AppComponent->SchoolListComponent", factoryd55f8188de756273ca44e3b0c44298fc1c149afb) + registerProviderFactory("^->AppComponent->SchoolListComponent", factoryd55f8188de756273ca44f47b58f8f304c97af4d5) registerProviderFactory("^->AppComponent->ActivityListComponent", factory7177e6769ee69064a61bf47b58f8f304c97af4d5) registerProviderFactory("^->AppComponent->InputLectureComponent", factory622e14688d9803ec3c64f47b58f8f304c97af4d5) registerProviderFactory("^->AppComponent->LoginComponent", factoryd6018e98563de75a2ba4f47b58f8f304c97af4d5) diff --git a/App/Sources/Feature/SchoolListFeature/Source/SchoolListComponent.swift b/App/Sources/Feature/SchoolListFeature/Source/SchoolListComponent.swift index bf3527c1..cc43c55d 100644 --- a/App/Sources/Feature/SchoolListFeature/Source/SchoolListComponent.swift +++ b/App/Sources/Feature/SchoolListFeature/Source/SchoolListComponent.swift @@ -1,10 +1,17 @@ import NeedleFoundation import SwiftUI +import Service -public protocol SchoolListDependency: Dependency {} +public protocol SchoolListDependency: Dependency { + var fetchSchoolListUseCase: any FetchSchoolListUseCase { get } +} public final class SchoolListComponent: Component, SchoolListFactory { public func makeView() -> some View { - SchoolListView(viewModel: .init()) + SchoolListView( + viewModel: .init( + fetchSchoolListUseCase: dependency.fetchSchoolListUseCase + ) + ) } } diff --git a/App/Sources/Feature/SchoolListFeature/Source/SchoolListView.swift b/App/Sources/Feature/SchoolListFeature/Source/SchoolListView.swift index 234b1240..6bf700bd 100644 --- a/App/Sources/Feature/SchoolListFeature/Source/SchoolListView.swift +++ b/App/Sources/Feature/SchoolListFeature/Source/SchoolListView.swift @@ -57,6 +57,9 @@ struct SchoolListView: View { viewModel.updateIsPresentedInputSchoolInfoView(isPresented: true, state: "등록") } } + .onAppear { + viewModel.onApper() + } .padding(.horizontal, 28) .navigationTitle("학교 목록") .toolbar { diff --git a/App/Sources/Feature/SchoolListFeature/Source/SchoolListViewModel.swift b/App/Sources/Feature/SchoolListFeature/Source/SchoolListViewModel.swift index eeabe4d1..e7ff5c24 100644 --- a/App/Sources/Feature/SchoolListFeature/Source/SchoolListViewModel.swift +++ b/App/Sources/Feature/SchoolListFeature/Source/SchoolListViewModel.swift @@ -15,6 +15,12 @@ final class SchoolListViewModel: BaseViewModel { @Published var schoolList: [SchoolListEntity] = [] @Published var state: String = "" + private let fetchSchoolListUseCase: any FetchSchoolListUseCase + + init(fetchSchoolListUseCase: any FetchSchoolListUseCase) { + self.fetchSchoolListUseCase = fetchSchoolListUseCase + } + func updateIsShowingAdminPageBottomSheet(isShowing: Bool) { isShowingAdminPageBottomSheet = isShowing } @@ -35,4 +41,15 @@ final class SchoolListViewModel: BaseViewModel { guard selectedPage != page else { return } selectedPage = page } + + @MainActor + func onApper() { + Task { + do { + schoolList = try await fetchSchoolListUseCase() + } catch { + print(String(describing: error)) + } + } + } } diff --git a/Service/Sources/Domain/SchoolDoamin/DTO/Response/SchoolListResponseDTO.swift b/Service/Sources/Domain/SchoolDoamin/DTO/Response/SchoolListResponseDTO.swift index 72e233e9..f999214e 100644 --- a/Service/Sources/Domain/SchoolDoamin/DTO/Response/SchoolListResponseDTO.swift +++ b/Service/Sources/Domain/SchoolDoamin/DTO/Response/SchoolListResponseDTO.swift @@ -10,7 +10,7 @@ public struct SchoolListResponseDTO: Decodable { enum CodingKeys: String, CodingKey { case schoolID = "id" - case schoolName + case schoolName = "name" case line case departments case logoImageURL = "logoImageUrl"