Skip to content

Commit

Permalink
Merge pull request #16 from Malloc72P/feature/ios/coordinator
Browse files Browse the repository at this point in the history
피드백 수정
  • Loading branch information
ITzombietux authored Apr 23, 2021
2 parents 7910a82 + d6e0cec commit 518284c
Show file tree
Hide file tree
Showing 14 changed files with 84 additions and 138 deletions.
16 changes: 4 additions & 12 deletions ios/sidedishApp/sidedishApp.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,8 @@
9386C133262D7B0B008645D9 /* Item.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9386C132262D7B0B008645D9 /* Item.swift */; };
9386C156262D86C3008645D9 /* LayoutManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9386C155262D86C3008645D9 /* LayoutManager.swift */; };
9386C162262D8BA9008645D9 /* SidedishViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9386C161262D8BA9008645D9 /* SidedishViewModel.swift */; };
9386C16E262D8C02008645D9 /* Main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9386C16D262D8C02008645D9 /* Main.swift */; };
9386C16E262D8C02008645D9 /* Category.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9386C16D262D8C02008645D9 /* Category.swift */; };
9386C174262DB13C008645D9 /* SidedishCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9386C173262DB13C008645D9 /* SidedishCell.swift */; };
9386C17F262DC52C008645D9 /* Soup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9386C17E262DC52C008645D9 /* Soup.swift */; };
9386C184262DC53B008645D9 /* Side.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9386C183262DC53B008645D9 /* Side.swift */; };
9386C189262E4DB2008645D9 /* SectionHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9386C188262E4DB2008645D9 /* SectionHeader.swift */; };
9386C18E262E51F1008645D9 /* Endpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9386C18D262E51F1008645D9 /* Endpoint.swift */; };
9386C19B262E52C6008645D9 /* NetworkManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9386C19A262E52C6008645D9 /* NetworkManager.swift */; };
Expand Down Expand Up @@ -86,10 +84,8 @@
9386C132262D7B0B008645D9 /* Item.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Item.swift; sourceTree = "<group>"; };
9386C155262D86C3008645D9 /* LayoutManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LayoutManager.swift; sourceTree = "<group>"; };
9386C161262D8BA9008645D9 /* SidedishViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidedishViewModel.swift; sourceTree = "<group>"; };
9386C16D262D8C02008645D9 /* Main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Main.swift; sourceTree = "<group>"; };
9386C16D262D8C02008645D9 /* Category.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Category.swift; sourceTree = "<group>"; };
9386C173262DB13C008645D9 /* SidedishCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidedishCell.swift; sourceTree = "<group>"; };
9386C17E262DC52C008645D9 /* Soup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Soup.swift; sourceTree = "<group>"; };
9386C183262DC53B008645D9 /* Side.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Side.swift; sourceTree = "<group>"; };
9386C188262E4DB2008645D9 /* SectionHeader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SectionHeader.swift; sourceTree = "<group>"; };
9386C18D262E51F1008645D9 /* Endpoint.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Endpoint.swift; sourceTree = "<group>"; };
9386C19A262E52C6008645D9 /* NetworkManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkManager.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -193,9 +189,7 @@
isa = PBXGroup;
children = (
9386C132262D7B0B008645D9 /* Item.swift */,
9386C16D262D8C02008645D9 /* Main.swift */,
9386C17E262DC52C008645D9 /* Soup.swift */,
9386C183262DC53B008645D9 /* Side.swift */,
9386C16D262D8C02008645D9 /* Category.swift */,
764CE0A8263003A200DED09C /* Detail.swift */,
764CE0C62630167E00DED09C /* DetailItem.swift */,
);
Expand Down Expand Up @@ -422,20 +416,18 @@
9386C1B6262EA2E8008645D9 /* RemoteImageView.swift in Sources */,
9386C162262D8BA9008645D9 /* SidedishViewModel.swift in Sources */,
9386C1A5262E54D5008645D9 /* SidedishUseCase.swift in Sources */,
9386C184262DC53B008645D9 /* Side.swift in Sources */,
764CE0CC26301E7000DED09C /* DetailViewModelType.swift in Sources */,
764CE0BD26300A3000DED09C /* DetailViewModel.swift in Sources */,
764CE0B8263008E200DED09C /* DetailUseCasePort.swift in Sources */,
764CE0A9263003A200DED09C /* Detail.swift in Sources */,
9386C19B262E52C6008645D9 /* NetworkManager.swift in Sources */,
9386C17F262DC52C008645D9 /* Soup.swift in Sources */,
9386C1D2262FC561008645D9 /* SidedishViewModelType.swift in Sources */,
9386C133262D7B0B008645D9 /* Item.swift in Sources */,
9386C100262D7400008645D9 /* AppDelegate.swift in Sources */,
9386C1A0262E5334008645D9 /* SidedishNetworkManager.swift in Sources */,
764CE0B3263008C500DED09C /* DetailUseCase.swift in Sources */,
9386C156262D86C3008645D9 /* LayoutManager.swift in Sources */,
9386C16E262D8C02008645D9 /* Main.swift in Sources */,
9386C16E262D8C02008645D9 /* Category.swift in Sources */,
9386C189262E4DB2008645D9 /* SectionHeader.swift in Sources */,
9386C174262DB13C008645D9 /* SidedishCell.swift in Sources */,
9386C18E262E51F1008645D9 /* Endpoint.swift in Sources */,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,7 @@ import Foundation
import Combine

protocol SidedishNetworkManagerProtocol: class {
func getMain() -> AnyPublisher<Main, Error>
func getSoup() -> AnyPublisher<Soup, Error>
func getSide() -> AnyPublisher<Side, Error>
func requestCategory(path: String) -> AnyPublisher<Category, Error>
}

class SidedishNetworkManager: SidedishNetworkManagerProtocol {
Expand All @@ -26,18 +24,8 @@ class SidedishNetworkManager: SidedishNetworkManagerProtocol {
self.init(networkManager: networkManager)
}

func getMain() -> AnyPublisher<Main, Error> {
let endpoint = Endpoint.getCategory(path: "main")
return networkManager.get(type: Main.self, url: endpoint.url)
}

func getSoup() -> AnyPublisher<Soup, Error> {
let endpoint = Endpoint.getCategory(path: "soup")
return networkManager.get(type: Soup.self, url: endpoint.url)
}

func getSide() -> AnyPublisher<Side, Error> {
let endpoint = Endpoint.getCategory(path: "side")
return networkManager.get(type: Side.self, url: endpoint.url)
func requestCategory(path: String) -> AnyPublisher<Category, Error> {
let endpoint = Endpoint.getCategory(path: path)
return networkManager.get(type: Category.self, url: endpoint.url)
}
}
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
//
// Main.swift
// Category.swift
// sidedishApp
//
// Created by zombietux on 2021/04/19.
//

import Foundation

struct Main: Codable, Equatable, Hashable {
struct Category: Codable, Equatable, Hashable {
private var items: [Item]

init(items: [Item]) {
self.items = items
}

func getItems() -> [Item] {
func categories() -> [Item] {
return self.items
}
}
4 changes: 4 additions & 0 deletions ios/sidedishApp/sidedishApp/Domain/Entity/Item.swift
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@ struct Item: Codable, Equatable, Hashable {
func getEventBadgeColor(_ index: Int) -> String {
return self.eventBadgeList[index].getColorHex()
}

func isNotSale() -> Bool {
return self.salePrice == -1 ? true : false
}
}

struct EventBadge: Codable, Equatable, Hashable {
Expand Down
20 changes: 0 additions & 20 deletions ios/sidedishApp/sidedishApp/Domain/Entity/Side.swift

This file was deleted.

20 changes: 0 additions & 20 deletions ios/sidedishApp/sidedishApp/Domain/Entity/Soup.swift

This file was deleted.

12 changes: 2 additions & 10 deletions ios/sidedishApp/sidedishApp/Domain/UseCase/SidedishUseCase.swift
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,8 @@ class SidedishUseCase: SidedishUseCasePort {
self.init(sidedishNetworkManager: sidedishNetworkManager)
}

func getMain() -> AnyPublisher<Main, Error> {
return sidedishNetworkManager.getMain()
}

func getSoup() -> AnyPublisher<Soup, Error> {
return sidedishNetworkManager.getSoup()
}

func getSide() -> AnyPublisher<Side, Error> {
return sidedishNetworkManager.getSide()
func getCategory(path: String) -> AnyPublisher<Category, Error> {
return sidedishNetworkManager.requestCategory(path: path)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,5 @@ import Foundation
import Combine

protocol SidedishUseCasePort {
func getMain() -> AnyPublisher<Main, Error>
func getSoup() -> AnyPublisher<Soup, Error>
func getSide() -> AnyPublisher<Side, Error>
func getCategory(path: String) -> AnyPublisher<Category, Error>
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@ import UIKit
import Combine

class DetailViewController: UIViewController {
enum Section: Int, CaseIterable {
case main
case soup
case side
}

private var category: String!
private var id: Int!
private var cancellables: Set<AnyCancellable> = []
Expand All @@ -26,7 +32,6 @@ class DetailViewController: UIViewController {

}
.store(in: &cancellables)
// detailViewModel.fetchData(path: self.category, path: self.id)
detailViewModel.fetchData(path: "main", path: 0)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,44 +9,27 @@ import UIKit
import Combine

class SidedishViewController: UIViewController {
typealias FetchData = () -> ()

enum Section: Int, CaseIterable {
case main
case soup
case side

var sectionHeader: String {
switch self {
case .main: return "모두가 좋아하는 든든한 메인요리"
case .soup: return "정성이 담긴 뜨끈뜨끈 국물요리"
case .side: return "식탁을 풍성하게 하는 정갈한 밑반찬"
}
}
}

enum DataItem: Hashable {
case main(Item)
case soup(Item)
case side(Item)
}

enum SupplementaryElementKind {
static let sectionHeader = "supplementary-section-header"
}
typealias FetchDataHandler = (String) -> ()

private var cancellables: Set<AnyCancellable> = []
private var sidedishViewModel: SidedishViewModelType!
private var collectionView: UICollectionView!
private var dataSource: UICollectionViewDiffableDataSource<Section, DataItem>!
private let mainPath = "main"
private let soupPath = "soup"
private let sidePath = "side"

override func viewDidLoad() {
super.viewDidLoad()
sidedishViewModel = SidedishViewModel()
configureCollectionView()
fetchMainData()
fetchSoupData()
fetchSideData()
congigureFetchData()
}

private func congigureFetchData() {
self.fetchMainData(path: self.mainPath)
self.fetchSoupData(path: self.soupPath)
self.fetchSideData(path: self.sidePath)
}

private func configureCollectionView() {
Expand Down Expand Up @@ -104,27 +87,27 @@ class SidedishViewController: UIViewController {
}
}

private func fetchMainData() {
self.fetchData(fetchData: self.sidedishViewModel.fetchMainData)
private func fetchMainData(path: String) {
self.fetchData(fetchData: self.sidedishViewModel.fetchMainData, path: path)
}

private func fetchSoupData() {
self.fetchData(fetchData: self.sidedishViewModel.fetchSoupData)
private func fetchSoupData(path: String) {
self.fetchData(fetchData: self.sidedishViewModel.fetchSoupData, path: path)
}

private func fetchSideData() {
self.fetchData(fetchData: self.sidedishViewModel.fetchSideData)
private func fetchSideData(path: String) {
self.fetchData(fetchData: self.sidedishViewModel.fetchSideData, path: path)
}

private func fetchData(fetchData handler: FetchData) {
private func fetchData(fetchData handler: FetchDataHandler, path: String) {
self.sidedishViewModel.dataChanged
.receive(on: DispatchQueue.main)
.sink { [weak self] _ in
self?.updateSnapshot()
}
.store(in: &cancellables)

handler()
handler(path)
}

private func updateSnapshot() {
Expand All @@ -138,3 +121,26 @@ class SidedishViewController: UIViewController {
}
}

enum Section: Int, CaseIterable {
case main
case soup
case side

var sectionHeader: String {
switch self {
case .main: return "모두가 좋아하는 든든한 메인요리"
case .soup: return "정성이 담긴 뜨끈뜨끈 국물요리"
case .side: return "식탁을 풍성하게 하는 정갈한 밑반찬"
}
}
}

enum DataItem: Hashable {
case main(Item)
case soup(Item)
case side(Item)
}

enum SupplementaryElementKind {
static let sectionHeader = "supplementary-section-header"
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ struct LayoutManager {
func createLayout() -> UICollectionViewLayout {
let layout = UICollectionViewCompositionalLayout { sectionIndex, layoutEnvironment in

guard let sectionKind = SidedishViewController.Section(rawValue: sectionIndex) else {
guard let sectionKind = Section(rawValue: sectionIndex) else {
fatalError("Undefined section for value: \(sectionIndex)")//수정해야 함
}

Expand Down Expand Up @@ -47,7 +47,7 @@ struct LayoutManager {

func createSectionHeaderSupplementary() -> NSCollectionLayoutBoundarySupplementaryItem {
let headerItemSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1), heightDimension: .absolute(70))
let headerSupplementary = NSCollectionLayoutBoundarySupplementaryItem(layoutSize: headerItemSize, elementKind: SidedishViewController.SupplementaryElementKind.sectionHeader, alignment: .top)
let headerSupplementary = NSCollectionLayoutBoundarySupplementaryItem(layoutSize: headerItemSize, elementKind: SupplementaryElementKind.sectionHeader, alignment: .top)

return headerSupplementary
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ class SidedishCell: UICollectionViewCell {
self.descriptionLabel.text = item.getDescription()
self.normalPriceLabel.text = "\(item.getNormalPrice())"
self.salePriceLabel.text = "\(item.getSalePrice())"
self.salePriceLabel.isHidden = item.isNotSale()
guard let url = URL(string: item.getThumbnailImage()) else { return }
self.thumbnailImageView.setImage(with: url)
self.badgeLabel.backgroundColor = .systemGreen
Expand Down
Loading

0 comments on commit 518284c

Please sign in to comment.