Skip to content

Commit

Permalink
Merge pull request #191 from mash-up-kr/feature/sz/deadlinecell-refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
szzang-kr authored Aug 26, 2022
2 parents f840651 + 1bbacd6 commit 420f110
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 21 deletions.
10 changes: 1 addition & 9 deletions Projects/App/Sources/Common/SplashViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -44,19 +44,11 @@ final class SplashViewModel: SplashViewModelProtocol {
}

private func changeRootViewController(deadlineData: Int) {

var isDeadlineDataExist = true

if deadlineData == 0 {
isDeadlineDataExist = false
}

let rootViewController = MainViewController(
MainViewModel(
network: Network(),
repository: CategoryRepository(CategoryService(network: Network())),
OCRRepository: OCRRepository(OCRService(network: Network())),
deadlineDataExist: isDeadlineDataExist
OCRRepository: OCRRepository(OCRService(network: Network()))
))

let navigationController = UINavigationController(rootViewController: rootViewController)
Expand Down
5 changes: 3 additions & 2 deletions Projects/App/Sources/Main/MainCollectionViewDataSource.swift
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ final class MainCollectionViewDataSource: NSObject, UICollectionViewDataSource {
var didDeadLineCountdownTimeOver = PublishRelay<Void>()
var selectedCategoryIndexPath: IndexPath? = nil

private let disposeBag = DisposeBag()
private var deadLineDisposeBag = DisposeBag()

func numberOfSections(in collectionView: UICollectionView) -> Int {
// TODO: 마감임박 데이터 없을 때의 경우 처리 필요
Expand Down Expand Up @@ -67,7 +67,7 @@ final class MainCollectionViewDataSource: NSObject, UICollectionViewDataSource {
cell.gifticonApplyButtonDelegate = self
cell.countdownTimeOver
.bind(to: didDeadLineCountdownTimeOver)
.disposed(by: disposeBag)
.disposed(by: deadLineDisposeBag)
return cell
case .category:
guard let cell = collectionView.dequeReusableCell(CategoryCollectionViewCell.self,
Expand Down Expand Up @@ -112,6 +112,7 @@ final class MainCollectionViewDataSource: NSObject, UICollectionViewDataSource {
extension MainCollectionViewDataSource {
func updateDeadLineData(_ list: [GifticonCard]) {
deadLineData = list
deadLineDisposeBag = DisposeBag()
}

func updateCategoryData(_ list: [Category]) {
Expand Down
2 changes: 0 additions & 2 deletions Projects/App/Sources/Main/MainViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -144,8 +144,6 @@ final class MainViewController: BaseViewController<MainViewModelProtocol> {
mainView.configureDataSource(viewModel.mainDataSource)
mainView.configureDelegate(viewModel.mainDelegate)

mainView.isDeadlineDataExist.accept(viewModel.isDeadlineDataExist.value)

view.addSubview(mainView)
mainView.snp.makeConstraints {
$0.top.equalTo(navigationBar.snp.bottom)
Expand Down
11 changes: 5 additions & 6 deletions Projects/App/Sources/Main/MainViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -96,17 +96,13 @@ final class MainViewModel: MainViewModelProtocol {
init(
network: Networking,
repository: CategoryRepositoryLogic,
OCRRepository: OCRRepositoryLogic,
deadlineDataExist: Bool
OCRRepository: OCRRepositoryLogic
) {
self.gifticonService = GifticonService(network: network)
self.categoryRepository = repository
self.OCRRepository = OCRRepository
self.isDeadlineDataExist.accept(deadlineDataExist)

deadlineInfo()
category()
gifticonList()
bind()
}

Expand Down Expand Up @@ -195,9 +191,12 @@ extension MainViewModel {
})
.disposed(by: disposeBag)

// 마감 시간이 지나고 바로 리스트 재요청 시 그대로 남아있는 이슈가 있음
// 따라서 delay 500ms를 추가함
mainDataSource.didDeadLineCountdownTimeOver
.delay(.milliseconds(500), scheduler: MainScheduler.instance)
.subscribe(onNext: { [weak self] in
self?.deadlineInfo()
self?.reload()
})
.disposed(by: disposeBag)
}
Expand Down
2 changes: 2 additions & 0 deletions Projects/App/Sources/Main/View/MainView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ final class MainView: BaseView {
backgroundColor = .clear

isDeadlineDataExist
.skip(1)
.throttle(.milliseconds(500), scheduler: MainScheduler.instance)
.subscribe(onNext: { [weak self] _ in
self?.reloadCollectionViewSection(.deadLine)
})
Expand Down
7 changes: 5 additions & 2 deletions Projects/App/Sources/Usecase/GifticonEntity.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@ struct GifticonEntity {

init(_ responseModel: [GifticonResponseModel] = []) {
gifticonList = responseModel.compactMap({ model in
GifticonCard(
// 마감 시간이 지난 경우 리스트에 노출되지 않도록 방어
guard model.sprinkleAt.fullStringDate().compare(Date()) != .orderedAscending else { return nil }
return GifticonCard(
sprinkleTime: model.sprinkleAt,
gifticonInfo: Gifticon(
id: model.sprinkleID,
Expand All @@ -22,7 +24,8 @@ struct GifticonEntity {
expirationDate: model.expiredAt,
category: Category(rawValue: model.category) ?? .all),
numberOfParticipants: model.participants,
isParticipating: model.participateIn)
isParticipating: model.participateIn
)
})
}
}

0 comments on commit 420f110

Please sign in to comment.