Skip to content

Commit 4120fbc

Browse files
authored
Merge pull request #344 from EAT-SSU/fix/#343
[#343] 리뷰 페이지 버그 수정 및 새로고침 리팩토링
2 parents e27ee0b + 758bd96 commit 4120fbc

File tree

11 files changed

+528
-540
lines changed

11 files changed

+528
-540
lines changed

EATSSU/App/Sources/Data/Network/Foundation/Logger.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import Foundation
1010
import Moya
1111

1212
/// 네트워크 로그 출력을 제어하는 플래그
13-
private let isVerboseNetworkLoggingEnabled = false
13+
private let isVerboseNetworkLoggingEnabled = true
1414

1515
/// 네트워크 로깅을 위한 프로토콜
1616
protocol Logger {

EATSSU/App/Sources/Data/Network/Foundation/NoAuthRequiredPath.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ enum NoAuthRequiredPath: String, CaseIterable {
1515
case getFixedMenuTableResponse = "/menus"
1616
case variableMenuReviewRate = "/reviews/meals"
1717
case fixedMenuReviewRate = "/reviews/menus"
18-
case reviewList = "/reviews"
18+
// case reviewList = "/reviews"
1919

2020
static func contains(_ path: String) -> Bool {
2121
return Self.allCases.contains {

EATSSU/App/Sources/Presentation/Home/ViewController/CustomTimeTabController.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ final class CustomTimeTabController: BaseViewController {
2727
private var isProgrammaticScroll = false
2828
private var cancellables = Set<AnyCancellable>()
2929
private let dateSubject = PassthroughSubject<Date, Never>()
30+
31+
var datePublisher: AnyPublisher<Date, Never> {
32+
dateSubject.eraseToAnyPublisher()
33+
}
3034

3135
private lazy var morningVC = HomeRestaurantViewController()
3236
private lazy var lunchVC = HomeRestaurantViewController()
@@ -248,7 +252,7 @@ final class CustomTimeTabController: BaseViewController {
248252

249253
func updateDate(to date: Date) {
250254
todayDate = date
251-
dateSubject.send(date)
255+
dateSubject.send(date)
252256
}
253257
}
254258

EATSSU/App/Sources/Presentation/Home/ViewController/HomeViewController.swift

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
//
77

88
import UIKit
9+
import Combine
910

1011
import FirebaseAnalytics
1112
import Moya
@@ -24,6 +25,8 @@ final class HomeViewController: BaseViewController {
2425
}
2526
}
2627

28+
private var cancellables = Set<AnyCancellable>()
29+
2730
private let logoImageView: UIImageView = {
2831
let imageView = UIImageView(image: EATSSUDesignAsset.Images.mainLogoSmall.image)
2932
imageView.contentMode = .scaleAspectFit
@@ -87,7 +90,7 @@ final class HomeViewController: BaseViewController {
8790

8891
override func setLayout() {
8992
logoImageView.snp.makeConstraints { make in
90-
make.top.equalTo(view.safeAreaLayoutGuide)
93+
make.top.equalTo(view.safeAreaLayoutGuide)
9194
make.centerX.equalToSuperview()
9295
make.height.equalTo(28)
9396
}
@@ -110,6 +113,27 @@ final class HomeViewController: BaseViewController {
110113
}
111114
tabmanController.didMove(toParent: self)
112115
}
116+
117+
// MARK: - Public Functions
118+
119+
/// 리뷰 작성 후 데이터 새로고침
120+
func refreshAfterReview() {
121+
tabmanController.dateFetchData(for: currentDate)
122+
}
123+
124+
/// 하단 탭바에서 학식 탭 클릭 시 오늘 날짜로 초기화
125+
func resetToToday() {
126+
let today = Date()
127+
128+
// 이미 오늘 날짜면 아무것도 안 함
129+
if Calendar.current.isDate(currentDate, inSameDayAs: today) {
130+
return
131+
}
132+
// 오늘이 아니면 날짜 업데이트
133+
currentDate = today
134+
homeCalendarView.setSelected(date: today)
135+
tabmanController.updateDate(to: today)
136+
}
113137

114138
// MARK: - Firebase
115139

@@ -121,6 +145,11 @@ final class HomeViewController: BaseViewController {
121145

122146
private func setupDelegates() {
123147
homeCalendarView.delegate = tabmanController
148+
tabmanController.datePublisher
149+
.sink { [weak self] date in
150+
self?.currentDate = date
151+
}
152+
.store(in: &cancellables)
124153
}
125154

126155
@objc private func handleNewDayNotification(_ notification: Notification) {

EATSSU/App/Sources/Presentation/Review/View/SeeReview/ReviewEmptyViewCell.swift

Lines changed: 41 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,24 +9,53 @@ import UIKit
99

1010
import SnapKit
1111

12+
import EATSSUDesign
13+
1214
final class ReviewEmptyViewCell: UITableViewCell {
1315
// MARK: - Properties
1416

1517
static let identifier = "ReviewEmptyViewCell"
1618

1719
// MARK: - UI Components
1820

19-
private lazy var noReviewImageView: UIImageView = {
21+
private lazy var reviewIconImageView: UIImageView = {
2022
let imageView = UIImageView()
21-
imageView.image = ImageLiteral.noReview
23+
imageView.image = EATSSUDesignAsset.Images.reviewIcon.image
24+
imageView.contentMode = .scaleAspectFit
2225
return imageView
2326
}()
27+
28+
private lazy var mainLabel: UILabel = {
29+
let label = UILabel()
30+
label.text = "아직 작성된 리뷰가 없어요!"
31+
label.font = EATSSUDesignFontFamily.Pretendard.medium.font(size: 16)
32+
label.textColor = EATSSUDesignAsset.Color.GrayScale.gray600.color
33+
label.textAlignment = .center
34+
return label
35+
}()
36+
37+
private lazy var subLabel: UILabel = {
38+
let label = UILabel()
39+
label.text = "메뉴에 가장 먼저 리뷰를 남겨주세요"
40+
label.font = EATSSUDesignFontFamily.Pretendard.medium.font(size: 12)
41+
label.textColor = EATSSUDesignAsset.Color.GrayScale.gray600.color
42+
label.textAlignment = .center
43+
return label
44+
}()
45+
46+
private lazy var contentStackView: UIStackView = {
47+
let stackView = UIStackView(arrangedSubviews: [reviewIconImageView, mainLabel, subLabel])
48+
stackView.axis = .vertical
49+
stackView.spacing = 12
50+
stackView.alignment = .center
51+
return stackView
52+
}()
2453

2554
// MARK: - Functions
2655

2756
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
2857
super.init(style: style, reuseIdentifier: reuseIdentifier)
29-
contentView.addSubview(noReviewImageView)
58+
contentView.addSubview(contentStackView)
3059
setLayout()
3160
}
3261

@@ -36,16 +65,22 @@ final class ReviewEmptyViewCell: UITableViewCell {
3665
}
3766

3867
func setLayout() {
39-
noReviewImageView.snp.makeConstraints {
68+
reviewIconImageView.snp.makeConstraints {
69+
$0.width.height.equalTo(48)
70+
}
71+
72+
contentStackView.snp.makeConstraints {
4073
$0.center.equalToSuperview()
4174
}
4275
}
4376

4477
func configure(isTokenExist: Bool) {
4578
if isTokenExist {
46-
noReviewImageView.image = ImageLiteral.noReview
79+
mainLabel.text = "아직 작성된 리뷰가 없어요!"
80+
subLabel.text = "메뉴에 가장 먼저 리뷰를 남겨주세요"
4781
} else {
48-
noReviewImageView.image = ImageLiteral.pleaseLogin
82+
mainLabel.text = "로그인이 필요합니다"
83+
subLabel.text = "로그인 후 리뷰를 확인하세요"
4984
}
5085
}
5186
}

0 commit comments

Comments
 (0)