Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"images" : [
{
"filename" : "bitnagil_chevron_icon@1x.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "bitnagil_chevron_icon@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "bitnagil_chevron_icon@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ final class BitnagilButtonTableViewCell: BitnagilBaseTableViewCell {
button.isEnabled = isButtonEnabled

if isButtonEnabled {
button.backgroundColor = BitnagilColor.lightBlue100
button.setTitleColor(BitnagilColor.navy500, for: .normal)
button.backgroundColor = BitnagilColor.orange50
button.setTitleColor(BitnagilColor.orange500, for: .normal)
} else {
button.backgroundColor = BitnagilColor.gray98
button.setTitleColor(BitnagilColor.gray70, for: .disabled)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,9 @@ import UIKit

final class BitnagilChevronTableViewCell: BitnagilBaseTableViewCell {
private enum Layout {
static let chevronImageViewTrailingSpacing: CGFloat = 16
static let chevronImageViewSize: CGFloat = 16
static let chevronImageViewTrailingSpacing: CGFloat = 20
static let chevronImageWidth: CGFloat = 7
static let chevronImageHeight: CGFloat = 11
}

private let chevronImageView = UIImageView()
Expand All @@ -29,7 +30,7 @@ final class BitnagilChevronTableViewCell: BitnagilBaseTableViewCell {

chevronImageView.tintColor = .black
chevronImageView.image = BitnagilIcon
.chevronIcon(direction: .right)?
.bitnagilChevronIcon(direction: .right)?
.withRenderingMode(.alwaysTemplate)
}

Expand All @@ -41,7 +42,8 @@ final class BitnagilChevronTableViewCell: BitnagilBaseTableViewCell {
chevronImageView.snp.makeConstraints { make in
make.centerY.equalToSuperview()
make.trailing.equalToSuperview().inset(Layout.chevronImageViewTrailingSpacing)
make.size.equalTo(Layout.chevronImageViewSize)
make.width.equalTo(Layout.chevronImageWidth)
make.height.equalTo(Layout.chevronImageHeight)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@ enum BitnagilIcon {
// MARK: - Common Icons
static let backButtonIcon = UIImage(named: "back_button_icon", in: bundle, with: nil)
static let plusIcon = UIImage(named: "plus_icon", in: bundle, with: nil)?.withRenderingMode(.alwaysTemplate)

static let bitnagilChevronIcon = UIImage(named: "bitnagil_chevron_icon", in: bundle, with: nil)
static func bitnagilChevronIcon(direction: Direction) -> UIImage? {
return BitnagilIcon.bitnagilChevronIcon?.rotate(degrees: direction.rotation)?.withRenderingMode(.alwaysTemplate)
}
// MARK: - Login Icons
static let kakaoIcon = UIImage(named: "kakao_icon", in: bundle, with: nil)
static let appleIcon = UIImage(named: "apple_icon", in: bundle, with: nil)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,15 @@ public struct PresentationDependencyAssembler: DependencyAssemblerProtocol {
guard let emotionUseCase = container.resolve(type: EmotionUseCaseProtocol.self)
else { fatalError("emotionUseCase 의존성이 등록되지 않았습니다.") }

guard let appConfigRepository = container.resolve(type: AppConfigRepositoryProtocol.self)
else { fatalError("appConfigRepository 의존성이 등록되지 않았습니다.") }


return HomeViewModel(
routineUseCase: routineUseCase,
userDataUseCase: userDataUseCase,
emotionUseCase: emotionUseCase)
emotionUseCase: emotionUseCase,
appConfigRepository: appConfigRepository)
}

DIContainer.shared.register(type: LoginViewModel.self) { container in
Expand Down
30 changes: 30 additions & 0 deletions Projects/Presentation/Sources/Home/View/HomeViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ final class HomeViewController: BaseViewController<HomeViewModel> {
super.viewDidLoad()
showIndicatorView()
viewModel.action(input: .loadNickname)
viewModel.action(input: .fetchVersion)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

버전 체크 트리거 위치 재고 필요(백그라운드 복귀 시 재검 없음)

viewDidLoad 한 번만 호출되므로, 사용자가 App Store 다녀온 뒤 앱으로 복귀해도 재검이 실행되지 않습니다. viewWillAppear 추가 트리거 또는 willEnterForeground 노티 관찰을 권장합니다.

예시(선택, 변경은 파일 범위 밖):

private var foregroundObserver: Any?

override func viewDidLoad() {
    super.viewDidLoad()
    foregroundObserver = NotificationCenter.default.addObserver(
        forName: UIApplication.willEnterForegroundNotification, object: nil, queue: .main
    ) { [weak self] _ in
        self?.viewModel.action(input: .fetchVersion)
    }
}

deinit {
    if let obs = foregroundObserver { NotificationCenter.default.removeObserver(obs) }
}
🤖 Prompt for AI Agents
In Projects/Presentation/Sources/Home/View/HomeViewController.swift around line
106, the version check is triggered only in viewDidLoad (viewModel.action(input:
.fetchVersion)), so returning from the App Store or background won’t re-run it;
modify the controller to also trigger fetchVersion on viewWillAppear(_:) or
observe UIApplication.willEnterForegroundNotification and call
viewModel.action(input: .fetchVersion) from the observer using [weak self], and
ensure you remove the observer in deinit (or use the new NotificationCenter
token removal) to avoid leaks.

}

override func viewWillAppear(_ animated: Bool) {
Expand Down Expand Up @@ -461,6 +462,35 @@ final class HomeViewController: BaseViewController<HomeViewModel> {
self?.weekView.updateAllCompletedState(allCompletedDates: allCompletedDates)
}
.store(in: &cancellables)

viewModel.output.updateVersionPublisher
.receive(on: DispatchQueue.main)
.sink { [weak self] updateURL in
guard let updateURL else { return }

let alert = UIAlertController(
title: "업데이트가 필요합니다",
message: "원활한 이용을 위해, 빛나길을 업데이트 해주세요!",
preferredStyle: .alert)

let cancel = UIAlertAction(
title: "취소",
style: .default,
handler: { _ in exit(0) })

let update = UIAlertAction(
title: "업데이트",
style: .default,
handler: { _ in
UIApplication.shared.open(updateURL, options: [:], completionHandler: { _ in exit(0) })
})
Comment on lines +485 to +486

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

딩이 강종이 심사 리젝 사유라고 해가주구 생각해봤는데욤 ... 그냥 검정 화면 혹은 빈 화면을 띄우는건 어떤지 ??

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아하 앱에 다시 돌아왔을때 빈 화면만 보여주자는 말씀이신가요??

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

네네네 !!!!!! 만약 리젝 된다면 .. ㅎㅎㅎㅎㅎ

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

조아요 꼼수더라도 일단 우회 고~!


alert.addAction(cancel)
alert.addAction(update)
alert.preferredAction = update
self?.present(alert, animated: true)
}
.store(in: &cancellables)
}

// 해당 날짜의 Routine View를 설정합니다. (없다면 EmptyView)
Expand Down
37 changes: 35 additions & 2 deletions Projects/Presentation/Sources/Home/ViewModel/HomeViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ final class HomeViewModel: ViewModel {
case fetchDailyRoutine
case refreshDailyRoutine
case updateRoutineCompletion(updatedRoutine: Routine)
case fetchVersion
}

struct Output {
Expand All @@ -31,6 +32,7 @@ final class HomeViewModel: ViewModel {
let routinesPublisher: AnyPublisher<[Routine], Never>
let updateRoutineCompletionResultPublisher: AnyPublisher<Bool, Never>
let allCompletedRoutineDatePublisher: AnyPublisher<[Date], Never>
let updateVersionPublisher: AnyPublisher<URL?, Never>
}

private(set) var output: Output
Expand All @@ -45,6 +47,7 @@ final class HomeViewModel: ViewModel {
private let selectedRoutineSubject = CurrentValueSubject<Routine?, Never>(nil)
private let updateRoutineCompletionResultSubject = PassthroughSubject<Bool, Never>()
private let allCompletedRoutineDateSubject = CurrentValueSubject<[Date], Never>([])
private let updateVersionSubject = PassthroughSubject<URL?, Never>()

private let calendar = Calendar.current
private let today = Date()
Expand All @@ -54,14 +57,18 @@ final class HomeViewModel: ViewModel {
private let routineUseCase: RoutineUseCaseProtocol
private let userDataUseCase: UserDataUseCaseProtocol
private let emotionUseCase: EmotionUseCaseProtocol
private let appConfigRepository: AppConfigRepositoryProtocol

init(
routineUseCase: RoutineUseCaseProtocol,
userDataUseCase: UserDataUseCaseProtocol,
emotionUseCase: EmotionUseCaseProtocol
emotionUseCase: EmotionUseCaseProtocol,
appConfigRepository: AppConfigRepositoryProtocol
) {
self.routineUseCase = routineUseCase
self.userDataUseCase = userDataUseCase
self.emotionUseCase = emotionUseCase
self.appConfigRepository = appConfigRepository
self.output = Output(
nicknamePublisher: nicknameSubject.eraseToAnyPublisher(),
emotionPublisher: emotionSubject.eraseToAnyPublisher(),
Expand All @@ -70,7 +77,8 @@ final class HomeViewModel: ViewModel {
fetchRoutineResultPublisher: fetchRoutineResultSubject.eraseToAnyPublisher(),
routinesPublisher: routinesSubject.eraseToAnyPublisher(),
updateRoutineCompletionResultPublisher: updateRoutineCompletionResultSubject.eraseToAnyPublisher(),
allCompletedRoutineDatePublisher: allCompletedRoutineDateSubject.eraseToAnyPublisher())
allCompletedRoutineDatePublisher: allCompletedRoutineDateSubject.eraseToAnyPublisher(),
updateVersionPublisher: updateVersionSubject.eraseToAnyPublisher())
}

func action(input: Input) {
Expand Down Expand Up @@ -102,6 +110,9 @@ final class HomeViewModel: ViewModel {

case .refreshDailyRoutine:
refreshSelectedDateRoutines()

case .fetchVersion:
checkVersion()
}
}

Expand Down Expand Up @@ -262,4 +273,26 @@ final class HomeViewModel: ViewModel {
}
}
}

private func checkVersion() {
let currentVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String
let major = currentVersion?.split(separator: ".").first

Task {
do {
let appStoreAppVersion = try await appConfigRepository.fetchAppVersion()
let appStoreMajor = appStoreAppVersion?.split(separator: ".").first

if major != appStoreMajor {
let url = URL(string: "itms-apps://itunes.apple.com/app/id6749437799")
updateVersionSubject.send(url)
} else {
updateVersionSubject.send(nil)
}

} catch {

}
}
}
Comment on lines +277 to +297

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

버전 비교 로직의 nil/파싱 예외 처리 보강 및 실패 시 안전 동작 필요

현재는 옵셔널 비교와 에러 삼키기 때문에, 일시적 네트워크/파싱 실패에도 ‘강제 업데이트’로 오인될 위험이 있습니다. 실패 시에는 업데이트 미필요로 처리하고, 비교값은 확정적으로 언랩해 주세요.

-    private func checkVersion() {
-        let currentVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String
-        let major = currentVersion?.split(separator: ".").first
-
-        Task {
-            do {
-                let appStoreAppVersion = try await appConfigRepository.fetchAppVersion()
-                let appStoreMajor = appStoreAppVersion?.split(separator: ".").first
-
-                if major != appStoreMajor {
-                    let url = URL(string: "itms-apps://itunes.apple.com/app/id6749437799")
-                    updateVersionSubject.send(url)
-                } else {
-                    updateVersionSubject.send(nil)
-                }
-
-            } catch {
-
-            }
-        }
-    }
+    private func checkVersion() {
+        guard
+            let currentVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String,
+            let currentMajor = currentVersion.split(separator: ".").first
+        else {
+            updateVersionSubject.send(nil)
+            return
+        }
+
+        Task {
+            do {
+                guard
+                    let appStoreVersion = try await appConfigRepository.fetchAppVersion(),
+                    let appStoreMajor = appStoreVersion.split(separator: ".").first
+                else {
+                    updateVersionSubject.send(nil)
+                    return
+                }
+
+                if currentMajor != appStoreMajor {
+                    let url = URL(string: "itms-apps://itunes.apple.com/app/id6749437799")
+                    updateVersionSubject.send(url)
+                } else {
+                    updateVersionSubject.send(nil)
+                }
+            } catch {
+                updateVersionSubject.send(nil)
+            }
+        }
+    }

보완 포인트:

  • 메이저 비교 기준은 여기서는 “상이하면 강제 업데이트”, SettingViewModel은 “버전 전체 불일치”로 보입니다. 사용자 경험 일관성을 위해 기준 통합을 검토해 주세요.

🏁 Script executed:

#!/bin/bash
# SettingViewModel의 버전 비교 기준 확인
rg -nP 'SettingViewModel' -n --type swift -C3
rg -nP 'fetchVersion\(\)|versionSubject|needUpdate|latest' -n --type swift -C3

Length of output: 13336


버전 비교 로직 nil/파싱 예외 처리 강화 및 비교 기준 통합 검토

  • checkVersion()에서 currentVersion/appStoreVersionguard로 확실히 언랩하고, 실패 또는 에러 시 updateVersionSubject.send(nil) 처리
  • HomeViewModel(메이저 버전)과 SettingViewModel(전체 버전) 비교 기준 불일치하므로 UX 일관성에 맞춰 기준 통합 검토
     private func checkVersion() {
-        let currentVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String
-        let major = currentVersion?.split(separator: ".").first
+        guard
+            let currentVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String,
+            let currentMajor = currentVersion.split(separator: ".").first
+        else {
+            updateVersionSubject.send(nil)
+            return
+        }

         Task {
             do {
-                let appStoreAppVersion = try await appConfigRepository.fetchAppVersion()
-                let appStoreMajor = appStoreAppVersion?.split(separator: ".").first
+                guard
+                    let appStoreVersion = try await appConfigRepository.fetchAppVersion(),
+                    let appStoreMajor = appStoreVersion.split(separator: ".").first
+                else {
+                    updateVersionSubject.send(nil)
+                    return
+                }

                 if currentMajor != appStoreMajor {
                     let url = URL(string: "itms-apps://itunes.apple.com/app/id6749437799")
                     updateVersionSubject.send(url)
                 } else {
                     updateVersionSubject.send(nil)
                 }
             } catch {
-                
+                updateVersionSubject.send(nil)
             }
         }
     }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
private func checkVersion() {
let currentVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String
let major = currentVersion?.split(separator: ".").first
Task {
do {
let appStoreAppVersion = try await appConfigRepository.fetchAppVersion()
let appStoreMajor = appStoreAppVersion?.split(separator: ".").first
if major != appStoreMajor {
let url = URL(string: "itms-apps://itunes.apple.com/app/id6749437799")
updateVersionSubject.send(url)
} else {
updateVersionSubject.send(nil)
}
} catch {
}
}
}
private func checkVersion() {
guard
let currentVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String,
let currentMajor = currentVersion.split(separator: ".").first
else {
updateVersionSubject.send(nil)
return
}
Task {
do {
guard
let appStoreVersion = try await appConfigRepository.fetchAppVersion(),
let appStoreMajor = appStoreVersion.split(separator: ".").first
else {
updateVersionSubject.send(nil)
return
}
if currentMajor != appStoreMajor {
let url = URL(string: "itms-apps://itunes.apple.com/app/id6749437799")
updateVersionSubject.send(url)
} else {
updateVersionSubject.send(nil)
}
} catch {
updateVersionSubject.send(nil)
}
}
}

}
9 changes: 4 additions & 5 deletions Projects/Presentation/Sources/MyPage/View/MypageView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ final class MypageView: BaseViewController<MypageViewModel> {
navigationController?.navigationBar.standardAppearance = appearance
navigationController?.navigationBar.scrollEdgeAppearance = appearance
navigationController?.navigationBar.compactAppearance = appearance
navigationController?.navigationBar.isHidden = false
}

override func configureAttribute() {
Expand All @@ -58,11 +59,7 @@ final class MypageView: BaseViewController<MypageViewModel> {

settingButton.action = #selector(settingButtonTapped)
settingButton.target = self
settingButton.tintColor = .black
settingButton.image = BitnagilIcon
.settingIcon?
.withRenderingMode(.alwaysTemplate)

settingButton.image = BitnagilIcon.settingIcon?.withRenderingMode(.alwaysOriginal)
profileImageView.image = BitnagilGraphic.profileGraphic

nicknameLabel.font = BitnagilFont(style: .title3, weight: .semiBold).font
Expand Down Expand Up @@ -112,12 +109,14 @@ final class MypageView: BaseViewController<MypageViewModel> {

override func bind() {
viewModel.output.nickNamePublisher
.receive(on: DispatchQueue.main)
.sink { [weak self] nickname in
self?.nicknameLabel.text = nickname
}
.store(in: &cancellables)

viewModel.output.externalURLPublisher
.receive(on: DispatchQueue.main)
.sink { [weak self] url in
let safariView = SFSafariViewController(url: url)
self?.present(safariView, animated: true)
Expand Down
16 changes: 10 additions & 6 deletions Projects/Presentation/Sources/Setting/View/SettingView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import UIKit

final class SettingView: BaseViewController<SettingViewModel> {
private enum Layout {
static let tableViewTopSpacing: CGFloat = 32
static let tableViewTopSpacing: CGFloat = 80
static let tableViewHeaderHeight: CGFloat = 48
static let tableViewRowHeight: CGFloat = 48
static let tableViewFooterHeight: CGFloat = .zero
Expand Down Expand Up @@ -110,7 +110,8 @@ final class SettingView: BaseViewController<SettingViewModel> {

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// configureNavigationBar(navigationStyle: .withBackButton(title: "설정"))
navigationController?.navigationBar.isHidden = true
configureCustomNavigationBar(navigationBarStyle: .withBackButton(title: "설정"))
}
Comment on lines 111 to 115

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

⚠️ Potential issue

viewWillAppear에서 커스텀 네비게이션 바를 매번 추가 — 중복 추가 위험

configureCustomNavigationBar(...)가 매 진입마다 새로운 뷰를 붙이면 중복/레이아웃 누적 문제가 발생합니다. 1회만 추가하도록 가드하세요.

 final class SettingView: BaseViewController<SettingViewModel> {
+    private var didAddCustomNavigationBar = Bool(false)
 ...
     override func viewWillAppear(_ animated: Bool) {
         super.viewWillAppear(animated)
         navigationController?.navigationBar.isHidden = true
-        configureCustomNavigationBar(navigationBarStyle: .withBackButton(title: "설정"))
+        if !didAddCustomNavigationBar {
+            configureCustomNavigationBar(navigationBarStyle: .withBackButton(title: "설정"))
+            didAddCustomNavigationBar = true
+        }
     }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// configureNavigationBar(navigationStyle: .withBackButton(title: "설정"))
navigationController?.navigationBar.isHidden = true
configureCustomNavigationBar(navigationBarStyle: .withBackButton(title: "설정"))
}
final class SettingView: BaseViewController<SettingViewModel> {
private var didAddCustomNavigationBar = Bool(false)
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.navigationBar.isHidden = true
if !didAddCustomNavigationBar {
configureCustomNavigationBar(navigationBarStyle: .withBackButton(title: "설정"))
didAddCustomNavigationBar = true
}
}
// ... rest of the class ...
}
🤖 Prompt for AI Agents
In Projects/Presentation/Sources/Setting/View/SettingView.swift around lines
111–115, viewWillAppear currently calls configureCustomNavigationBar every time
which can attach the custom nav bar repeatedly; change to only add it once by
guarding (either move the call to viewDidLoad or add a boolean flag like
hasConfiguredCustomNavBar that you set after first configuration, or check for
an existing custom nav bar subview/tag before calling
configureCustomNavigationBar), keep the
navigationController?.navigationBar.isHidden = true behavior but ensure
configureCustomNavigationBar is skipped when already added.


override func configureAttribute() {
Expand All @@ -134,10 +135,14 @@ final class SettingView: BaseViewController<SettingViewModel> {
}

override func configureLayout() {
let safeArea = view.safeAreaLayoutGuide

view.addSubview(tableView)

tableView.snp.makeConstraints { make in
make.edges.horizontalEdges.equalToSuperview()
make.top.equalTo(safeArea.snp.top).offset(Layout.tableViewTopSpacing)
make.horizontalEdges.equalToSuperview()
make.bottom.equalTo(safeArea.snp.bottom)
}
}

Expand Down Expand Up @@ -337,9 +342,8 @@ extension SettingView: UITableViewDataSource {
// view.backgroundColor = .white
// return view
case .information:
let view = UIView()
view.backgroundColor = .white
return view
headerView.configure(shouldShowDivider: false, title: section.title)
return headerView
default:
headerView.configure(shouldShowDivider: true, title: section.title)
return headerView
Expand Down
Loading