diff --git a/FLINT/Domain/Sources/Entity/Content/OTTPlatform.swift b/FLINT/Domain/Sources/Entity/Content/OTTPlatform.swift index e736a6a7..b843c4c5 100644 --- a/FLINT/Domain/Sources/Entity/Content/OTTPlatform.swift +++ b/FLINT/Domain/Sources/Entity/Content/OTTPlatform.swift @@ -28,8 +28,7 @@ public enum OTTPlatform: String, CaseIterable, Hashable { } // MARK: - URL - - #warning("TODO: - 서버 연동 시 서버 값으로 대체") + public var webURL: URL { let urlString: String = { switch self { diff --git a/FLINT/Presentation/Sources/View/Component/BottomSheet/OTTPlatformList/OTTBottomSheetView.swift b/FLINT/Presentation/Sources/View/Component/BottomSheet/OTTPlatformList/OTTBottomSheetView.swift index efdf6d6f..d3d6eb56 100644 --- a/FLINT/Presentation/Sources/View/Component/BottomSheet/OTTPlatformList/OTTBottomSheetView.swift +++ b/FLINT/Presentation/Sources/View/Component/BottomSheet/OTTPlatformList/OTTBottomSheetView.swift @@ -17,7 +17,6 @@ public final class OTTBottomSheetView: BaseView { // MARK: - Public Event public var onTapDim: (() -> Void)? - public var onTapOpen: ((OTTPlatform) -> Void)? // MARK: - UI @@ -30,9 +29,15 @@ public final class OTTBottomSheetView: BaseView { public let containerView = UIView().then { $0.backgroundColor = .flintGray800 $0.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner] + $0.layer.cornerRadius = 16 $0.clipsToBounds = true } + private let titleLabel = UILabel().then { + $0.attributedText = .pretendard(.head3_sb_18, text: "이 작품을 볼 수 있는 OTT", color: .flintWhite) + $0.numberOfLines = 1 + } + private let stackView = UIStackView().then { $0.axis = .vertical $0.spacing = 8 @@ -42,7 +47,9 @@ public final class OTTBottomSheetView: BaseView { private let rowHeight: CGFloat = 48 private let rowSpacing: CGFloat = 8 - private let sheetTopInset: CGFloat = 36 + private let sheetTopInset: CGFloat = 24 + private let titleHeight: CGFloat = 24 + private let titleBottomSpacing: CGFloat = 16 private let sheetBottomInset: CGFloat = 32 private var platforms: [OTTPlatform] = [] @@ -51,7 +58,7 @@ public final class OTTBottomSheetView: BaseView { let count = platforms.count let rowsHeight = CGFloat(count) * rowHeight let spacingsHeight = CGFloat(max(count - 1, 0)) * rowSpacing - return sheetTopInset + rowsHeight + spacingsHeight + sheetBottomInset + return sheetTopInset + titleHeight + titleBottomSpacing + rowsHeight + spacingsHeight + sheetBottomInset } // MARK: - Public API @@ -71,6 +78,7 @@ public final class OTTBottomSheetView: BaseView { addSubview(dimView) addSubview(containerView) + containerView.addSubview(titleLabel) containerView.addSubview(stackView) setAction() @@ -86,10 +94,15 @@ public final class OTTBottomSheetView: BaseView { $0.height.equalTo(sheetHeight) } - stackView.snp.makeConstraints { + titleLabel.snp.makeConstraints { $0.top.equalToSuperview().inset(sheetTopInset) - $0.leading.equalToSuperview() - $0.trailing.equalToSuperview() + $0.leading.trailing.equalToSuperview().inset(20) + $0.height.equalTo(titleHeight) + } + + stackView.snp.makeConstraints { + $0.top.equalTo(titleLabel.snp.bottom).offset(titleBottomSpacing) + $0.leading.trailing.equalToSuperview().inset(20) $0.bottom.equalToSuperview().inset(sheetBottomInset) } } @@ -113,9 +126,6 @@ public final class OTTBottomSheetView: BaseView { platforms.forEach { platform in let row = OTTPlatformRowView() row.configure(platform: platform) - row.onTapOpen = { [weak self] in - self?.onTapOpen?(platform) - } stackView.addArrangedSubview(row) } diff --git a/FLINT/Presentation/Sources/View/Component/BottomSheet/OTTPlatformList/OTTListView.swift b/FLINT/Presentation/Sources/View/Component/BottomSheet/OTTPlatformList/OTTListView.swift index 38a18162..6c039fda 100644 --- a/FLINT/Presentation/Sources/View/Component/BottomSheet/OTTPlatformList/OTTListView.swift +++ b/FLINT/Presentation/Sources/View/Component/BottomSheet/OTTPlatformList/OTTListView.swift @@ -59,7 +59,7 @@ public final class OTTListView: BaseView { platforms.forEach { platform in let row = OTTPlatformRowView() row.configure(platform: platform) - row.onTapOpen = { [weak self] in + row.onTap = { [weak self] in self?.onSelectPlatform?(platform) } stackView.addArrangedSubview(row) diff --git a/FLINT/Presentation/Sources/View/Component/BottomSheet/OTTPlatformList/OTTPlatformRowView.swift b/FLINT/Presentation/Sources/View/Component/BottomSheet/OTTPlatformList/OTTPlatformRowView.swift index a1c20ff4..6ccd3ebf 100644 --- a/FLINT/Presentation/Sources/View/Component/BottomSheet/OTTPlatformList/OTTPlatformRowView.swift +++ b/FLINT/Presentation/Sources/View/Component/BottomSheet/OTTPlatformList/OTTPlatformRowView.swift @@ -13,77 +13,62 @@ import Then import Domain public final class OTTPlatformRowView: BaseView { - + // MARK: - Public Event - - public var onTapOpen: (() -> Void)? - + + public var onTap: (() -> Void)? + // MARK: - UI - + private let iconImageView = UIImageView().then { $0.contentMode = .scaleAspectFit $0.clipsToBounds = true $0.layer.cornerRadius = 22 } - + private let titleLabel = UILabel().then { $0.numberOfLines = 1 } - private let openButton = BasicButton( - title: "바로 보러가기", - titleStyle: .body2_m_14 - ) - - // MARK: - Public API - + public func configure(platform: OTTPlatform) { iconImageView.image = platform.icon - titleLabel.attributedText = .pretendard(.body1_sb_16, text: platform.title , color: .flintWhite) + titleLabel.attributedText = .pretendard(.body1_sb_16, text: platform.title, color: .flintWhite) } - + // MARK: - BaseView - + public override func setUI() { addSubview(iconImageView) addSubview(titleLabel) - addSubview(openButton) - - setAction() + + isUserInteractionEnabled = true + let tap = UITapGestureRecognizer(target: self, action: #selector(didTap)) + addGestureRecognizer(tap) } - + public override func setLayout() { iconImageView.snp.makeConstraints { $0.leading.equalToSuperview() $0.centerY.equalToSuperview() $0.size.equalTo(44) } - + titleLabel.snp.makeConstraints { $0.leading.equalTo(iconImageView.snp.trailing).offset(12) - $0.centerY.equalToSuperview() - - } - - openButton.snp.makeConstraints { $0.trailing.equalToSuperview() $0.centerY.equalToSuperview() - $0.width.equalTo(98) - $0.height.equalTo(32) } + snp.makeConstraints { $0.height.equalTo(48) } } - + // MARK: - Action - - private func setAction() { - openButton.addTarget(self, action: #selector(didTapOpen), for: .touchUpInside) - } - - @objc private func didTapOpen() { - onTapOpen?() + + @objc private func didTap() { + onTap?() } } diff --git a/FLINT/Presentation/Sources/View/Component/CollectionFolderCollectionViewCell.swift b/FLINT/Presentation/Sources/View/Component/CollectionFolderCollectionViewCell.swift index 688450b7..bc6410ac 100644 --- a/FLINT/Presentation/Sources/View/Component/CollectionFolderCollectionViewCell.swift +++ b/FLINT/Presentation/Sources/View/Component/CollectionFolderCollectionViewCell.swift @@ -55,7 +55,7 @@ public final class CollectionFolderCollectionViewCell: BaseCollectionViewCell { } private let profileImageVIew = UIImageView().then { - $0.contentMode = .scaleAspectFit + $0.contentMode = .scaleAspectFill $0.clipsToBounds = true $0.layer.cornerRadius = 14 } diff --git a/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Background/img_background_header.imageset/Contents.json b/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Background/img_background_header.imageset/Contents.json new file mode 100644 index 00000000..010c95cf --- /dev/null +++ b/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Background/img_background_header.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "collection_bg1.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "collection_bg1@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "collection_bg1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Background/img_background_header.imageset/collection_bg1.png b/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Background/img_background_header.imageset/collection_bg1.png new file mode 100644 index 00000000..35e02707 Binary files /dev/null and b/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Background/img_background_header.imageset/collection_bg1.png differ diff --git a/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Background/img_background_header.imageset/collection_bg1@2x.png b/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Background/img_background_header.imageset/collection_bg1@2x.png new file mode 100644 index 00000000..a78c6d54 Binary files /dev/null and b/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Background/img_background_header.imageset/collection_bg1@2x.png differ diff --git a/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Background/img_background_header.imageset/collection_bg1@3x.png b/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Background/img_background_header.imageset/collection_bg1@3x.png new file mode 100644 index 00000000..4a31147f Binary files /dev/null and b/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Background/img_background_header.imageset/collection_bg1@3x.png differ diff --git a/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Common/imgFolder.imageset/Contents.json b/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Common/imgFolder.imageset/Contents.json index e2e9c2ef..09500d06 100644 --- a/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Common/imgFolder.imageset/Contents.json +++ b/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Common/imgFolder.imageset/Contents.json @@ -1,17 +1,17 @@ { "images" : [ { - "filename" : "imgFolder.png", + "filename" : "Vector 2.png", "idiom" : "universal", "scale" : "1x" }, { - "filename" : "Vector.png", + "filename" : "Vector@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "Vector 1.png", + "filename" : "Vector@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Common/imgFolder.imageset/Vector 1.png b/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Common/imgFolder.imageset/Vector 1.png deleted file mode 100644 index bf5432f7..00000000 Binary files a/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Common/imgFolder.imageset/Vector 1.png and /dev/null differ diff --git a/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Common/imgFolder.imageset/Vector 2.png b/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Common/imgFolder.imageset/Vector 2.png new file mode 100644 index 00000000..a7904f95 Binary files /dev/null and b/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Common/imgFolder.imageset/Vector 2.png differ diff --git a/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Common/imgFolder.imageset/Vector.png b/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Common/imgFolder.imageset/Vector.png deleted file mode 100644 index 7df0b53c..00000000 Binary files a/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Common/imgFolder.imageset/Vector.png and /dev/null differ diff --git a/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Common/imgFolder.imageset/Vector@2x.png b/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Common/imgFolder.imageset/Vector@2x.png new file mode 100644 index 00000000..ecbb69e3 Binary files /dev/null and b/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Common/imgFolder.imageset/Vector@2x.png differ diff --git a/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Common/imgFolder.imageset/Vector@3x.png b/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Common/imgFolder.imageset/Vector@3x.png new file mode 100644 index 00000000..ad35ac5a Binary files /dev/null and b/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Common/imgFolder.imageset/Vector@3x.png differ diff --git a/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Common/imgFolder.imageset/imgFolder.png b/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Common/imgFolder.imageset/imgFolder.png deleted file mode 100644 index b3aa6c42..00000000 Binary files a/FLINT/Presentation/Sources/View/Resource/Assets.xcassets/Image/Common/imgFolder.imageset/imgFolder.png and /dev/null differ diff --git a/FLINT/Presentation/Sources/View/Scene/Home/CollectionFolder/CollectionFolderListView.swift b/FLINT/Presentation/Sources/View/Scene/Home/CollectionFolder/CollectionFolderListView.swift index 71c3a490..b6233078 100644 --- a/FLINT/Presentation/Sources/View/Scene/Home/CollectionFolder/CollectionFolderListView.swift +++ b/FLINT/Presentation/Sources/View/Scene/Home/CollectionFolder/CollectionFolderListView.swift @@ -27,6 +27,16 @@ public final class CollectionFolderListView: BaseView { return UICollectionView(frame: .zero, collectionViewLayout: layout) }() + private let bottomGradientView = GradientView().then { + $0.colors = [ + DesignSystem.Color.background.withAlphaComponent(0), + DesignSystem.Color.background + ] + $0.locations = [0.0, 1.0] + $0.startPoint = CGPoint(x: 0.5, y: 0) + $0.endPoint = CGPoint(x: 0.5, y: 1) + } + public override func setUI() { backgroundColor = .flintBackground @@ -44,7 +54,7 @@ public final class CollectionFolderListView: BaseView { } public override func setHierarchy() { - addSubviews(countLabel, collectionView) + addSubviews(countLabel, collectionView, bottomGradientView) } public override func setLayout() { @@ -57,5 +67,10 @@ public final class CollectionFolderListView: BaseView { $0.top.equalTo(countLabel.snp.bottom).offset(14) $0.horizontalEdges.bottom.equalToSuperview() } + + bottomGradientView.snp.makeConstraints { + $0.horizontalEdges.bottom.equalToSuperview() + $0.height.equalTo(195) + } } } diff --git a/FLINT/Presentation/Sources/View/Scene/Home/HomeGreetingTableViewCell.swift b/FLINT/Presentation/Sources/View/Scene/Home/HomeGreetingTableViewCell.swift index ca90bde6..1d3354b7 100644 --- a/FLINT/Presentation/Sources/View/Scene/Home/HomeGreetingTableViewCell.swift +++ b/FLINT/Presentation/Sources/View/Scene/Home/HomeGreetingTableViewCell.swift @@ -17,21 +17,12 @@ public final class HomeGreetingTableViewCell: BaseTableViewCell { private let backgroundImageView = UIImageView().then { $0.contentMode = .scaleAspectFill $0.clipsToBounds = true - $0.isUserInteractionEnabled = false + $0.image = UIImage.imgBackgroundHeader } - private let blackOverlayView = UIView().then { - $0.backgroundColor = .black.withAlphaComponent(0.3) - $0.isUserInteractionEnabled = false - $0.clipsToBounds = true - } - - private let innerShadowLayer = CAShapeLayer() - - private let innerShadowOverlayView = UIView().then { - $0.backgroundColor = .clear - $0.isUserInteractionEnabled = false - $0.clipsToBounds = true + private let logoImageView = UIImageView().then { + $0.contentMode = .scaleAspectFit + $0.image = DesignSystem.Icon.flintLogo } private let greetingLabel = UILabel().then { @@ -41,7 +32,7 @@ public final class HomeGreetingTableViewCell: BaseTableViewCell { // MARK: - Setup public override func setHierarchy() { - contentView.addSubviews(backgroundImageView,blackOverlayView, innerShadowOverlayView, greetingLabel) + contentView.addSubviews(backgroundImageView, logoImageView, greetingLabel) } public override func setLayout() { @@ -49,56 +40,21 @@ public final class HomeGreetingTableViewCell: BaseTableViewCell { $0.edges.equalToSuperview() } - blackOverlayView.snp.makeConstraints { - $0.edges.equalToSuperview() - } - - innerShadowOverlayView.snp.makeConstraints { - $0.edges.equalToSuperview() + logoImageView.snp.makeConstraints { + $0.top.equalToSuperview().inset(18) + $0.size.equalTo(CGSize(width: 90, height: 20)) } + greetingLabel.snp.makeConstraints { - $0.top.equalToSuperview().inset(174) $0.horizontalEdges.equalToSuperview().inset(16) - $0.bottom.equalToSuperview().inset(30) + $0.bottom.equalToSuperview().inset(20) } } public override func setStyle() { backgroundColor = .clear contentView.backgroundColor = .clear - backgroundImageView.image = UIImage.imgBackgroundGradiantMiddle - - innerShadowLayer.shadowColor = UIColor.flintBackground.cgColor - innerShadowLayer.shadowOffset = CGSize(width: 0, height: 30) - innerShadowLayer.shadowOpacity = 0.35 - innerShadowLayer.shadowRadius = 40 - innerShadowLayer.fillRule = .evenOdd - innerShadowLayer.fillColor = UIColor.black.cgColor - - if innerShadowLayer.superlayer == nil { - innerShadowOverlayView.layer.addSublayer(innerShadowLayer) - } - } - - public override func layoutSubviews() { - super.layoutSubviews() - updateInnerShadowPath() - } - - - private func updateInnerShadowPath() { - let bounds = innerShadowOverlayView.bounds - guard bounds.width > 0, bounds.height > 0 else { return } - - let inset = -innerShadowLayer.shadowRadius * 2.0 - - let outerPath = UIBezierPath(rect: bounds.insetBy(dx: inset, dy: inset)) - let innerPath = UIBezierPath(rect: bounds) - - outerPath.append(innerPath) - innerShadowLayer.path = outerPath.cgPath - innerShadowLayer.frame = bounds } // MARK: - Configure diff --git a/FLINT/Presentation/Sources/ViewController/Scene/Home/HomeViewController.swift b/FLINT/Presentation/Sources/ViewController/Scene/Home/HomeViewController.swift index c9c83c6f..372cc87f 100644 --- a/FLINT/Presentation/Sources/ViewController/Scene/Home/HomeViewController.swift +++ b/FLINT/Presentation/Sources/ViewController/Scene/Home/HomeViewController.swift @@ -18,8 +18,12 @@ public protocol HomeViewControllerFactory { public final class HomeViewController: BaseViewController { + // MARK: - Properties + private let viewModel: HomeViewModel + // MARK: - Init + public init(viewModel: HomeViewModel, viewControllerFactory: ViewControllerFactory) { self.viewModel = viewModel super.init(nibName: nil, bundle: nil) @@ -30,7 +34,6 @@ public final class HomeViewController: BaseViewController { fatalError("init(coder:) has not been implemented") } - // MARK: - Lifecycle public override func viewDidLoad() { @@ -47,16 +50,16 @@ public final class HomeViewController: BaseViewController { public override func setUI() { view.backgroundColor = DesignSystem.Color.background - - setNavigationBar( - .init( - left: .logo, - right: .none, - backgroundStyle: .solid(DesignSystem.Color.background) - ) - ) + navigationController?.setNavigationBarHidden(true, animated: false) statusBarBackgroundView.isHidden = true + navigationBarView.isHidden = true + } + + public override func setLayout() { + rootView.snp.remakeConstraints { + $0.edges.equalToSuperview() + } } public override func bind() { @@ -68,7 +71,7 @@ public final class HomeViewController: BaseViewController { .store(in: &cancellables) } - // MARK: - Private + // MARK: - Private Methods private func setTableView() { rootView.tableView.dataSource = self @@ -87,6 +90,23 @@ public final class HomeViewController: BaseViewController { rootView.floatingButton.addTarget(self, action: #selector(didTapFab), for: .touchUpInside) } + private func map(_ style: HomeViewModel.TitleHeaderStyle) -> TitleHeaderTableViewCell.TitleHeaderStyle { + switch style { + case .normal: return .normal + case .more: return .more + } + } + + private func presentOTTBottomSheet(platforms: [OTTPlatform]) { + let vc = BaseBottomSheetViewController( + title: "이 작품을 볼 수 있는 OTT", + content: .ott(platforms: platforms) + ) + present(vc, animated: false) + } + + // MARK: - Actions + @objc private func didTapFab() { Log.d("didTapFab") let factory = viewControllerFactory @@ -107,18 +127,6 @@ public final class HomeViewController: BaseViewController { nav.pushViewController(vc, animated: true) } - - - private func map(_ style: HomeViewModel.TitleHeaderStyle) -> TitleHeaderTableViewCell.TitleHeaderStyle { - switch style { - case .normal: return .normal - case .more: return .more - } - } - private func presentOTTBottomSheet(platforms: [OTTPlatform]) { - let vc = BaseBottomSheetViewController(content: .ott(platforms: platforms)) - present(vc, animated: false) - } } @@ -150,15 +158,14 @@ extension HomeViewController: UITableViewDataSource { cell.configure(style: map(style), title: title, subtitle: subtitle) - if style == .more { cell.onTapMore = { [weak self] in guard let self else { return } - + let factory = self.viewControllerFactory - ?? (self.parent as? TabBarViewController)?.viewControllerFactory + ?? (self.parent as? TabBarViewController)?.viewControllerFactory guard let factory else { return } - + let vc = factory.makeCollectionFolderListViewController() self.navigationController?.pushViewController(vc, animated: true) } @@ -174,28 +181,28 @@ extension HomeViewController: UITableViewDataSource { cell.onSelectItem = { [weak self] entity in guard let self else { return } - + guard let collectionId = Int64(entity.id) else { print("invalid collectionId:", entity.id) return } - + guard let vc = viewControllerFactory?.makeCollectionDetailViewController(collectionId: collectionId) else { return } self.navigationController?.pushViewController(vc, animated: true) } - + return cell case .ctaButton(let title): let cell = tableView.dequeueReusableCell(HomeCTAButtonTableViewCell.self, for: indexPath) - + cell.configure(title: title) - + cell.onTap = { [weak self] in guard let self else { return } (self.parent as? TabBarViewController)?.selectTab(.explore) } - + return cell case .recentSavedContents(let items): diff --git a/FLINT/Presentation/Sources/ViewModel/Scene/Home/HomeViewModel.swift b/FLINT/Presentation/Sources/ViewModel/Scene/Home/HomeViewModel.swift index a4bb455e..a84aff34 100644 --- a/FLINT/Presentation/Sources/ViewModel/Scene/Home/HomeViewModel.swift +++ b/FLINT/Presentation/Sources/ViewModel/Scene/Home/HomeViewModel.swift @@ -71,7 +71,7 @@ public final class HomeViewModel { public func load() { - fetchProfileUseCase(for: .user(id: 1)) + fetchProfileUseCase(for: .me) .manageThread() .sink { completion in if case let .failure(error) = completion { @@ -84,7 +84,6 @@ public final class HomeViewModel { } .store(in: &cancellables) - // 1) Fliner 추천 fetchRecommendedCollectionsUseCase() .manageThread() .sink { completion in @@ -100,7 +99,6 @@ public final class HomeViewModel { } .store(in: &cancellables) - // 2) 최근 저장한 콘텐츠 fetchBookmarkedContentsUseCase(for: .me) .manageThread() .sink { completion in @@ -133,14 +131,12 @@ public final class HomeViewModel { private func makeSections() -> [SectionModel] { var result: [SectionModel] = [] - // 1) Greeting result.append( .init(rows: [ .greeting(userName: userName) ]) ) - // 2) Fliner 추천 컬렉션 var flinerRows: [Row] = [ .header( style: .normal, @@ -155,7 +151,6 @@ public final class HomeViewModel { result.append(.init(rows: flinerRows)) - // 3) 최근 저장한 콘텐츠 var recentRows: [Row] = [ .header( style: .normal,