From 902d3ad50c323337a5b168f03f9ccb4efdbf29c2 Mon Sep 17 00:00:00 2001 From: dlrjswns Date: Sun, 7 May 2023 03:41:34 +0900 Subject: [PATCH 01/18] =?UTF-8?q?[ADD]=20=ED=88=AC=EB=91=90=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=EC=B0=BD=EB=B7=B0=EC=9D=98=20=EC=BD=98=ED=85=90?= =?UTF-8?q?=EC=B8=A0=EB=A5=BC=20=EB=82=98=ED=83=80=EB=82=B4=EA=B8=B0?= =?UTF-8?q?=EC=9C=84=ED=95=9C=20=ED=95=A8=EC=88=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PLUB/Sources/Views/Home/MainPage/Component/TodoInfoView.swift | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/PLUB/Sources/Views/Home/MainPage/Component/TodoInfoView.swift b/PLUB/Sources/Views/Home/MainPage/Component/TodoInfoView.swift index 9e44bdc51..7e8dea8bd 100644 --- a/PLUB/Sources/Views/Home/MainPage/Component/TodoInfoView.swift +++ b/PLUB/Sources/Views/Home/MainPage/Component/TodoInfoView.swift @@ -48,4 +48,8 @@ final class TodoInfoView: UIView { $0.trailing.lessThanOrEqualToSuperview() } } + + func configureUI(with model: String) { + todoLabel.text = model + } } From a4b83fd81746cac23db65f3640d8961688fbf8c3 Mon Sep 17 00:00:00 2001 From: dlrjswns Date: Sun, 7 May 2023 03:42:57 +0900 Subject: [PATCH 02/18] =?UTF-8?q?[ADD]=20=ED=88=AC=EB=91=90=EC=95=8C?= =?UTF-8?q?=EB=A6=BC=EC=B0=BD=20=EB=AA=A8=EB=8D=B8=EA=B3=BC=20=EB=8D=B8?= =?UTF-8?q?=EB=A6=AC=EA=B2=8C=EC=9D=B4=ED=8A=B8=20=ED=94=84=EB=A1=9C?= =?UTF-8?q?=ED=86=A0=EC=BD=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Home/MainPage/Component/TodoAlertController.swift | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/PLUB/Sources/Views/Home/MainPage/Component/TodoAlertController.swift b/PLUB/Sources/Views/Home/MainPage/Component/TodoAlertController.swift index a50360c23..7d7c00bb0 100644 --- a/PLUB/Sources/Views/Home/MainPage/Component/TodoAlertController.swift +++ b/PLUB/Sources/Views/Home/MainPage/Component/TodoAlertController.swift @@ -11,6 +11,17 @@ import RxSwift import SnapKit import Then +struct TodoAlertModel { + let profileImage: String + let date: String + let name: String + let content: String +} + +protocol TodoAlertDelegate: AnyObject { + func whichProofImage(image: UIImage) +} + final class TodoAlertController: BaseViewController { private let dimmedView = UIView().then { From e2890c852155ef56496bd2f11cd2d4b02093cab1 Mon Sep 17 00:00:00 2001 From: dlrjswns Date: Sun, 7 May 2023 03:43:52 +0900 Subject: [PATCH 03/18] =?UTF-8?q?[ADD]=20=ED=88=AC=EB=91=90=EC=95=8C?= =?UTF-8?q?=EB=A6=BC=EC=B0=BD=EC=97=90=EC=84=9C=20=EB=B0=9B=EC=95=84?= =?UTF-8?q?=EC=98=AC=20=EB=8D=B0=EC=9D=B4=ED=84=B0=EB=A5=BC=20=EC=9C=84?= =?UTF-8?q?=ED=95=9C=20=EC=86=8D=EC=84=B1=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Home/MainPage/Component/TodoAlertController.swift | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/PLUB/Sources/Views/Home/MainPage/Component/TodoAlertController.swift b/PLUB/Sources/Views/Home/MainPage/Component/TodoAlertController.swift index 7d7c00bb0..5e6ef67dc 100644 --- a/PLUB/Sources/Views/Home/MainPage/Component/TodoAlertController.swift +++ b/PLUB/Sources/Views/Home/MainPage/Component/TodoAlertController.swift @@ -7,6 +7,7 @@ import UIKit +import Kingfisher import RxSwift import SnapKit import Then @@ -24,6 +25,10 @@ protocol TodoAlertDelegate: AnyObject { final class TodoAlertController: BaseViewController { + weak var delegate: TodoAlertDelegate? + + private var proofImage: UIImage? + private let dimmedView = UIView().then { $0.backgroundColor = .black.withAlphaComponent(0.45) } @@ -77,8 +82,8 @@ final class TodoAlertController: BaseViewController { } private let completedButton = UIButton(configuration: .plain()).then { - $0.configurationUpdateHandler = $0.configuration?.detailRecruitment(label: "완료!") - $0.isSelected = true + $0.configurationUpdateHandler = $0.configuration?.plubButton(label: "완료!") + $0.isEnabled = false } private let tapGesture = UITapGestureRecognizer(target: TodoAlertController.self, action: nil) From 95a32bfedeff86666e561d0eef24e21c56c9d8a6 Mon Sep 17 00:00:00 2001 From: dlrjswns Date: Sun, 7 May 2023 03:44:28 +0900 Subject: [PATCH 04/18] =?UTF-8?q?[FEAT]=20=ED=88=AC=EB=91=90=EC=95=8C?= =?UTF-8?q?=EB=A6=BC=EC=B0=BD=EC=9D=84=20=EB=82=98=ED=83=80=EB=82=B4?= =?UTF-8?q?=EA=B8=B0=EC=9C=84=ED=95=9C=20=EB=8F=99=EC=9E=91=20=EB=B0=8F=20?= =?UTF-8?q?=ED=95=A8=EC=88=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Component/TodoAlertController.swift | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/PLUB/Sources/Views/Home/MainPage/Component/TodoAlertController.swift b/PLUB/Sources/Views/Home/MainPage/Component/TodoAlertController.swift index 5e6ef67dc..73e67a0d6 100644 --- a/PLUB/Sources/Views/Home/MainPage/Component/TodoAlertController.swift +++ b/PLUB/Sources/Views/Home/MainPage/Component/TodoAlertController.swift @@ -208,11 +208,29 @@ final class TodoAlertController: BaseViewController { owner.present(bottomSheet, animated: false) } .disposed(by: disposeBag) + + completedButton.rx.tap + .subscribe(with: self) { owner, _ in + guard let image = owner.proofImage else { return } + owner.delegate?.whichProofImage(image: image) + owner.dismiss(animated: false) + } + .disposed(by: disposeBag) + } + + func configureUI(with model: TodoAlertModel) { + let url = URL(string: model.profileImage) + profileImageView.kf.setImage(with: url, placeholder: UIImage(named: "userDefaultImage")) + dateLabel.text = model.date + nameLabel.text = model.name + todoInfoView.configureUI(with: model.content) } } extension TodoAlertController: PhotoBottomSheetDelegate { func selectImage(image: UIImage) { + self.proofImage = image todoAlertView.image = image + completedButton.isEnabled = true } } From 8eafbe78107e4303890b262bfd6f558b32c5f723 Mon Sep 17 00:00:00 2001 From: dlrjswns Date: Sun, 7 May 2023 03:45:07 +0900 Subject: [PATCH 05/18] =?UTF-8?q?[FEAT]=20=ED=88=AC=EB=91=90=EC=95=8C?= =?UTF-8?q?=EB=A6=BC=EC=B0=BD=EC=9D=84=20=ED=86=B5=ED=95=9C=20=ED=88=AC?= =?UTF-8?q?=EB=91=90=EC=9D=B8=EC=A6=9D=EC=9D=B4=EB=AF=B8=EC=A7=80=EB=A5=BC?= =?UTF-8?q?=20=EC=A0=84=EB=8B=AC=ED=95=98=EA=B8=B0=EC=9C=84=ED=95=9C=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Views/Home/MainPage/TodolistViewController.swift | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/PLUB/Sources/Views/Home/MainPage/TodolistViewController.swift b/PLUB/Sources/Views/Home/MainPage/TodolistViewController.swift index b8449164e..7047ea1dd 100644 --- a/PLUB/Sources/Views/Home/MainPage/TodolistViewController.swift +++ b/PLUB/Sources/Views/Home/MainPage/TodolistViewController.swift @@ -163,6 +163,7 @@ extension TodolistViewController: TodoCollectionViewCellDelegate { if isCompleted { let alert = TodoAlertController() alert.modalPresentationStyle = .overFullScreen + alert.delegate = self present(alert, animated: false) } } @@ -177,3 +178,9 @@ extension TodolistViewController: TodoCollectionViewCellDelegate { present(bottomSheet, animated: false) } } + +extension TodolistViewController: TodoAlertDelegate { + func whichProofImage(image: UIImage) { + viewModel.whichProofImage.onNext(image) + } +} From 6aee6c996aaa1b0fef9b19cfc5cdce7580c68400 Mon Sep 17 00:00:00 2001 From: dlrjswns Date: Sun, 7 May 2023 17:10:06 +0900 Subject: [PATCH 06/18] =?UTF-8?q?[ADD]=20=ED=88=AC=EB=91=90=20=EB=9D=BC?= =?UTF-8?q?=EC=9D=B8=EC=97=90=20=EC=93=B0=EC=9D=BC=20=EA=B3=B5=ED=86=B5=20?= =?UTF-8?q?=ED=95=A8=EC=88=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PLUB/Configuration/Extensions/Ex+String.swift | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 PLUB/Configuration/Extensions/Ex+String.swift diff --git a/PLUB/Configuration/Extensions/Ex+String.swift b/PLUB/Configuration/Extensions/Ex+String.swift new file mode 100644 index 000000000..b91e15bfe --- /dev/null +++ b/PLUB/Configuration/Extensions/Ex+String.swift @@ -0,0 +1,16 @@ +// +// Ex + String.swift +// PLUB +// +// Created by 이건준 on 2023/05/07. +// + +import UIKit + +extension String { + func strikeThrough() -> NSAttributedString { + let attributeString = NSMutableAttributedString(string: self) + attributeString.addAttribute(NSAttributedString.Key.strikethroughStyle, value: NSUnderlineStyle.single.rawValue, range: NSMakeRange(0, attributeString.length)) + return attributeString + } +} From f42ff3405fa242a84d8f707dd2d7b3694128b89e Mon Sep 17 00:00:00 2001 From: dlrjswns Date: Sun, 7 May 2023 17:11:17 +0900 Subject: [PATCH 07/18] =?UTF-8?q?[CHORE]=20String=20=EA=B3=B5=ED=86=B5?= =?UTF-8?q?=ED=95=A8=EC=88=98=EC=B6=94=EA=B0=80=EC=97=90=20=EB=94=B0?= =?UTF-8?q?=EB=A5=B8=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/Views/Home/MainPage/Component/TodoInfoView.swift | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/PLUB/Sources/Views/Home/MainPage/Component/TodoInfoView.swift b/PLUB/Sources/Views/Home/MainPage/Component/TodoInfoView.swift index 7e8dea8bd..11094648c 100644 --- a/PLUB/Sources/Views/Home/MainPage/Component/TodoInfoView.swift +++ b/PLUB/Sources/Views/Home/MainPage/Component/TodoInfoView.swift @@ -19,11 +19,8 @@ final class TodoInfoView: UIView { } private let todoLabel = UILabel().then { - var paragraphStyle = NSMutableParagraphStyle() - paragraphStyle.lineHeightMultiple = 1.25 $0.textColor = .deepGray $0.font = .systemFont(ofSize: 14) - $0.attributedText = NSMutableAttributedString(string: "독후감 쓴 내용 팀원들이랑 공유하기", attributes: [NSAttributedString.Key.strikethroughStyle: NSUnderlineStyle.single.rawValue, NSAttributedString.Key.kern: -0.21, NSAttributedString.Key.paragraphStyle: paragraphStyle]) } override init(frame: CGRect) { @@ -50,6 +47,6 @@ final class TodoInfoView: UIView { } func configureUI(with model: String) { - todoLabel.text = model + todoLabel.attributedText = model.strikeThrough() } } From 3ac0a5e5125b56de08d79b4b5bb116ae8d92e3a2 Mon Sep 17 00:00:00 2001 From: dlrjswns Date: Sun, 7 May 2023 17:12:47 +0900 Subject: [PATCH 08/18] =?UTF-8?q?[FEAT]=20=EC=B2=B4=ED=81=AC=20=EC=9C=A0?= =?UTF-8?q?=EB=AC=B4=EC=97=90=20=EB=94=B0=EB=A5=B8=20=EB=9D=BC=EB=B2=A8=20?= =?UTF-8?q?=EC=84=A0=20UI=20=EB=B3=80=EA=B2=BD=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Home/MainPage/Component/CheckTodoView.swift | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/PLUB/Sources/Views/Home/MainPage/Component/CheckTodoView.swift b/PLUB/Sources/Views/Home/MainPage/Component/CheckTodoView.swift index be0070dd8..d8f08595b 100644 --- a/PLUB/Sources/Views/Home/MainPage/Component/CheckTodoView.swift +++ b/PLUB/Sources/Views/Home/MainPage/Component/CheckTodoView.swift @@ -12,7 +12,7 @@ import SnapKit import Then protocol CheckTodoViewDelegate: AnyObject { - func didTappedCheckboxButton(todoID: Int, isCompleted: Bool) + func didTappedCheckboxButton(todoID: Int, isCompleted: Bool, todo: String) } struct CheckTodoViewModel { @@ -27,6 +27,16 @@ final class CheckTodoView: UIView { weak var delegate: CheckTodoViewDelegate? private var model: CheckTodoViewModel? + private var isChecked: Bool = false { + didSet { + if isChecked { + todoLabel.attributedText = todoLabel.text?.strikeThrough() + } else { + todoLabel.attributedText = NSAttributedString(string: todoLabel.text ?? "") + } + checkboxButton.isChecked = isChecked + } + } private let disposeBag = DisposeBag() private let checkboxButton = CheckBoxButton(type: .none) @@ -48,7 +58,7 @@ final class CheckTodoView: UIView { private func bind() { checkboxButton.rx.isChecked - .subscribe(with: self) { owner, _ in + .subscribe(with: self) { owner, isChecked in guard let model = owner.model else { return } if model.isAuthor && !model.isProof { // 내가 작성했고 인증되있지않은 투두만 완료/인증 가능 owner.delegate?.didTappedCheckboxButton(todoID: model.todoID, isCompleted: owner.checkboxButton.isChecked) @@ -74,7 +84,7 @@ final class CheckTodoView: UIView { func configureUI(with model: CheckTodoViewModel) { self.model = model todoLabel.text = model.todo - checkboxButton.isChecked = model.isChecked + self.isChecked = model.isChecked // 해당 투두가 인증되었거나 작성자가 아니라면 -> 체크버튼 비활성화 checkboxButton.isEnabled = model.isProof || !model.isAuthor ? false : true From 978d540fdb54b4bd41803b7fbe55c4ac790226a9 Mon Sep 17 00:00:00 2001 From: dlrjswns Date: Sun, 7 May 2023 17:13:45 +0900 Subject: [PATCH 09/18] =?UTF-8?q?[CHORE]=20=ED=88=AC=EB=91=90=EC=95=8C?= =?UTF-8?q?=EB=A6=BC=EC=B0=BD=20UI=EB=A5=BC=20=EC=9C=84=ED=95=9C=20?= =?UTF-8?q?=EB=AA=A8=EB=8D=B8=20=EB=B3=80=EA=B2=BD=EC=97=90=20=EB=94=B0?= =?UTF-8?q?=EB=A5=B8=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Cell/TodoCollectionViewCell.swift | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/PLUB/Sources/Views/Home/MainPage/Cell/TodoCollectionViewCell.swift b/PLUB/Sources/Views/Home/MainPage/Cell/TodoCollectionViewCell.swift index f4cd61d8e..88a477570 100644 --- a/PLUB/Sources/Views/Home/MainPage/Cell/TodoCollectionViewCell.swift +++ b/PLUB/Sources/Views/Home/MainPage/Cell/TodoCollectionViewCell.swift @@ -15,7 +15,7 @@ import Then protocol TodoCollectionViewCellDelegate: AnyObject { func didTappedMoreButton() func didTappedLikeButton(timelineID: Int) - func didTappedTodo(todoID: Int, isCompleted: Bool) + func didTappedTodo(todoID: Int, isCompleted: Bool, model: TodoAlertModel) } struct TodoCollectionViewCellModel { @@ -26,6 +26,7 @@ struct TodoCollectionViewCellModel { let isLike: Bool let isAuthor: Bool let checkTodoViewModels: [CheckTodoViewModel] + let nickname: String? init(response: InquireAllTodoTimelineResponse) { todoTimelineID = response.todoTimelineID @@ -43,6 +44,7 @@ struct TodoCollectionViewCellModel { isProof: $0.isProof ) } + nickname = response.accountInfo?.nickname } } @@ -50,7 +52,7 @@ final class TodoCollectionViewCell: UICollectionViewCell { static let identifier = "TodoCollectionViewCell" private let disposeBag = DisposeBag() - private var timelineID: Int? + private var model: TodoCollectionViewCellModel? weak var delegate: TodoCollectionViewCellDelegate? private var likeCount: Int = 0 { @@ -145,16 +147,16 @@ final class TodoCollectionViewCell: UICollectionViewCell { likeButton.buttonTapObservable .subscribe(with: self) { owner, _ in - guard let timelineID = owner.timelineID else { return } - owner.delegate?.didTappedLikeButton(timelineID: timelineID) + guard let model = owner.model else { return } + owner.delegate?.didTappedLikeButton(timelineID: model.todoTimelineID) owner.likeCount += 1 } .disposed(by: disposeBag) likeButton.buttonUnTapObservable .subscribe(with: self) { owner, _ in - guard let timelineID = owner.timelineID else { return } - owner.delegate?.didTappedLikeButton(timelineID: timelineID) + guard let model = owner.model else { return } + owner.delegate?.didTappedLikeButton(timelineID: model.todoTimelineID) owner.likeCount -= 1 } .disposed(by: disposeBag) @@ -163,7 +165,7 @@ final class TodoCollectionViewCell: UICollectionViewCell { func configureUI(with model: TodoCollectionViewCellModel) { guard let profileImageString = model.profileImageString, let url = URL(string: profileImageString) else { return } - timelineID = model.todoTimelineID + self.model = model profileImageView.kf.setImage(with: url, placeholder: UIImage(named: "userDefaultImage")) likeCount = model.totalLikes likeButton.isSelected = model.isLike @@ -185,7 +187,17 @@ extension TodoCollectionViewCell { } extension TodoCollectionViewCell: CheckTodoViewDelegate { - func didTappedCheckboxButton(todoID: Int, isCompleted: Bool) { - delegate?.didTappedTodo(todoID: todoID, isCompleted: isCompleted) + func didTappedCheckboxButton(todoID: Int, isCompleted: Bool, todo: String) { + guard let model = model, + let name = model.nickname else { return } + delegate?.didTappedTodo( + todoID: todoID, + isCompleted: isCompleted, + model: .init( + profileImage: model.profileImageString ?? "", + date: model.date, + name: name, + content: todo) + ) } } From 4768056115d7d3963d50db21191ccd7c7f61c233 Mon Sep 17 00:00:00 2001 From: dlrjswns Date: Sun, 7 May 2023 17:52:58 +0900 Subject: [PATCH 10/18] =?UTF-8?q?[FEAT]=20=ED=88=AC=EB=91=90=20=EC=B2=B4?= =?UTF-8?q?=ED=81=AC=EC=97=AC=EB=B6=80=EB=A5=BC=20=EC=A0=84=EB=8B=AC=20?= =?UTF-8?q?=EB=B0=8F=20=EC=B2=B4=ED=81=AC=EB=90=9C=20=ED=88=AC=EB=91=90?= =?UTF-8?q?=EC=97=90=20=EA=B4=80=EB=A0=A8=EB=90=9C=20=EC=95=8C=EB=A6=BC?= =?UTF-8?q?=EC=B0=BD=EC=9D=84=20=EC=9C=84=ED=95=9C=20=EB=AA=A8=EB=8D=B8=20?= =?UTF-8?q?=EC=A0=84=EB=8B=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/Views/Home/MainPage/Component/CheckTodoView.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/PLUB/Sources/Views/Home/MainPage/Component/CheckTodoView.swift b/PLUB/Sources/Views/Home/MainPage/Component/CheckTodoView.swift index d8f08595b..228bd1660 100644 --- a/PLUB/Sources/Views/Home/MainPage/Component/CheckTodoView.swift +++ b/PLUB/Sources/Views/Home/MainPage/Component/CheckTodoView.swift @@ -37,6 +37,7 @@ final class CheckTodoView: UIView { checkboxButton.isChecked = isChecked } } + private let disposeBag = DisposeBag() private let checkboxButton = CheckBoxButton(type: .none) @@ -60,8 +61,9 @@ final class CheckTodoView: UIView { checkboxButton.rx.isChecked .subscribe(with: self) { owner, isChecked in guard let model = owner.model else { return } + owner.isChecked = isChecked if model.isAuthor && !model.isProof { // 내가 작성했고 인증되있지않은 투두만 완료/인증 가능 - owner.delegate?.didTappedCheckboxButton(todoID: model.todoID, isCompleted: owner.checkboxButton.isChecked) + owner.delegate?.didTappedCheckboxButton(todoID: model.todoID, isCompleted: owner.checkboxButton.isChecked, todo: model.todo) } } .disposed(by: disposeBag) From 55b7b95384d45d208fb5a4e248d65dc7df3d2325 Mon Sep 17 00:00:00 2001 From: dlrjswns Date: Sun, 7 May 2023 17:53:47 +0900 Subject: [PATCH 11/18] =?UTF-8?q?[FEAT]=20=EB=8D=B8=EB=A6=AC=EA=B2=8C?= =?UTF-8?q?=EC=9D=B4=ED=8A=B8=ED=95=A8=EC=88=98=EB=A5=BC=20=ED=86=B5?= =?UTF-8?q?=ED=95=B4=20=ED=88=AC=EB=91=90=EC=95=8C=EB=A6=BC=EC=B0=BD=20UI?= =?UTF-8?q?=EB=A5=BC=20=EC=9C=84=ED=95=9C=20=EB=AA=A8=EB=8D=B8=20=EC=A0=84?= =?UTF-8?q?=EB=8B=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PLUB.xcodeproj/project.pbxproj | 4 ++++ PLUB/Sources/Views/Home/MainPage/TodolistViewController.swift | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/PLUB.xcodeproj/project.pbxproj b/PLUB.xcodeproj/project.pbxproj index 756702f2b..bba876ff9 100644 --- a/PLUB.xcodeproj/project.pbxproj +++ b/PLUB.xcodeproj/project.pbxproj @@ -107,6 +107,7 @@ 70C9CC9F2A03FE8200BEB5F2 /* CompleteTodolistResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70C9CC9E2A03FE8200BEB5F2 /* CompleteTodolistResponse.swift */; }; 70C9CCA42A03FFC000BEB5F2 /* ProofTodolistRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70C9CCA32A03FFC000BEB5F2 /* ProofTodolistRequest.swift */; }; 70C9CCA62A05044400BEB5F2 /* LikeTodolistResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70C9CCA52A05044400BEB5F2 /* LikeTodolistResponse.swift */; }; + 70C9CCB82A07865700BEB5F2 /* Ex+String.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70C9CCB72A07865700BEB5F2 /* Ex+String.swift */; }; 70CF3330299793220077FF47 /* RegisterInterestRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70CF332F299793220077FF47 /* RegisterInterestRequest.swift */; }; 70CF33322998EBC30077FF47 /* RecruitmentFilterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70CF33312998EBC30077FF47 /* RecruitmentFilterViewController.swift */; }; 70CF3335299920CD0077FF47 /* RecruitmentFilterCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70CF3334299920CD0077FF47 /* RecruitmentFilterCollectionViewCell.swift */; }; @@ -516,6 +517,7 @@ 70C9CC9E2A03FE8200BEB5F2 /* CompleteTodolistResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompleteTodolistResponse.swift; sourceTree = ""; }; 70C9CCA32A03FFC000BEB5F2 /* ProofTodolistRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProofTodolistRequest.swift; sourceTree = ""; }; 70C9CCA52A05044400BEB5F2 /* LikeTodolistResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LikeTodolistResponse.swift; sourceTree = ""; }; + 70C9CCB72A07865700BEB5F2 /* Ex+String.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Ex+String.swift"; sourceTree = ""; }; 70CF332F299793220077FF47 /* RegisterInterestRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RegisterInterestRequest.swift; sourceTree = ""; }; 70CF33312998EBC30077FF47 /* RecruitmentFilterViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecruitmentFilterViewController.swift; sourceTree = ""; }; 70CF3334299920CD0077FF47 /* RecruitmentFilterCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecruitmentFilterCollectionViewCell.swift; sourceTree = ""; }; @@ -1344,6 +1346,7 @@ 70727A2029BF8F2A003DE956 /* Ex+Date.swift */, C307826729CF5D9700E1D44B /* Ex+UIImage.swift */, C36F31C829E3119200AC2C8A /* Ex+Collection.swift */, + 70C9CCB72A07865700BEB5F2 /* Ex+String.swift */, ); path = Extensions; sourceTree = ""; @@ -2518,6 +2521,7 @@ C333EEB929F45A7E00B3F84E /* ExportViewController.swift in Sources */, 70F1DFEF297D9E1C00F9BC83 /* DetailRecruitmentViewModel.swift in Sources */, BA8AA42A29863ABC004E9403 /* Interceptor.swift in Sources */, + 70C9CCB82A07865700BEB5F2 /* Ex+String.swift in Sources */, C307826829CF5D9700E1D44B /* Ex+UIImage.swift in Sources */, 70727A1F29BF7FC6003DE956 /* BoardSystemCollectionViewCell.swift in Sources */, C333EEC129F48EF400B3F84E /* InquireMeetingMemberUseCase.swift in Sources */, diff --git a/PLUB/Sources/Views/Home/MainPage/TodolistViewController.swift b/PLUB/Sources/Views/Home/MainPage/TodolistViewController.swift index 7047ea1dd..3bba19ae3 100644 --- a/PLUB/Sources/Views/Home/MainPage/TodolistViewController.swift +++ b/PLUB/Sources/Views/Home/MainPage/TodolistViewController.swift @@ -157,13 +157,15 @@ extension TodolistViewController: UICollectionViewDelegateFlowLayout { } extension TodolistViewController: TodoCollectionViewCellDelegate { - func didTappedTodo(todoID: Int, isCompleted: Bool) { + func didTappedTodo(todoID: Int, isCompleted: Bool, model: TodoAlertModel) { viewModel.selectTodolistID.onNext(todoID) viewModel.selectComplete.onNext(isCompleted) + if isCompleted { let alert = TodoAlertController() alert.modalPresentationStyle = .overFullScreen alert.delegate = self + alert.configureUI(with: model) present(alert, animated: false) } } From 96da25d9625c8ac7aa596a0cb58a364a0e61640a Mon Sep 17 00:00:00 2001 From: dlrjswns Date: Sun, 7 May 2023 18:06:51 +0900 Subject: [PATCH 12/18] =?UTF-8?q?[FEAT]=20=EC=9D=B8=EC=A6=9D=EC=9D=B4?= =?UTF-8?q?=ED=9B=84=20=EB=8D=B0=EC=9D=B4=ED=84=B0=EC=B5=9C=EC=8B=A0?= =?UTF-8?q?=ED=99=94=20=ED=8A=B8=EB=A6=AC=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 인증완료 이후 체크박스버튼 비활성화처리해야하는데 체크박스버튼에 해당 부분을 둘 시에 코드가 복잡할꺼같다는 판단에 인증이미지를 받음과 동시에 트리거 코드를 추가하였습니다. --- .../Views/Home/MainPage/TodolistViewController.swift | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/PLUB/Sources/Views/Home/MainPage/TodolistViewController.swift b/PLUB/Sources/Views/Home/MainPage/TodolistViewController.swift index 3bba19ae3..a236200da 100644 --- a/PLUB/Sources/Views/Home/MainPage/TodolistViewController.swift +++ b/PLUB/Sources/Views/Home/MainPage/TodolistViewController.swift @@ -108,9 +108,16 @@ final class TodolistViewController: BaseViewController { viewModel.successCompleteTodolist .emit(onNext: { success in - print("성공했니 \(success)") + print("투두완료성공 \(success)") }) .disposed(by: disposeBag) + + viewModel.successProofTodolist + .emit(with: self) { owner, success in + print("투두인증성공 \(success)") + owner.viewModel.selectPlubbingID.onNext(plubbingID) + } + .disposed(by: disposeBag) } } From d84091a13862cea4d39f04ecf2147b6307121320 Mon Sep 17 00:00:00 2001 From: dlrjswns Date: Sun, 7 May 2023 18:07:49 +0900 Subject: [PATCH 13/18] =?UTF-8?q?[ADD]=20=ED=88=AC=EB=91=90=EC=9D=B8?= =?UTF-8?q?=EC=A6=9D=EC=84=B1=EA=B3=B5=20=EC=9D=B4=ED=9B=84=20=EC=97=B0?= =?UTF-8?q?=EB=8F=99=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 투두인증성공 응답모델로 받은 proofImage를 이용할 수 있도록 성공이후 값을 방출하는 Observable을 추가하였습니다. --- .../MainPage/ViewModel/TodolistViewModel.swift | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/PLUB/Sources/Views/Home/MainPage/ViewModel/TodolistViewModel.swift b/PLUB/Sources/Views/Home/MainPage/ViewModel/TodolistViewModel.swift index bd9eae24f..bede1cb93 100644 --- a/PLUB/Sources/Views/Home/MainPage/ViewModel/TodolistViewModel.swift +++ b/PLUB/Sources/Views/Home/MainPage/ViewModel/TodolistViewModel.swift @@ -21,6 +21,7 @@ protocol TodolistViewModelType { // Output var todoTimelineModel: Driver<[TodolistModel]> { get } var successCompleteTodolist: Signal { get } + var successProofTodolist: Signal { get } } final class TodolistViewModel { @@ -32,6 +33,7 @@ final class TodolistViewModel { private let selectingTodolistID = PublishSubject() private let allTodoTimeline = BehaviorSubject<[InquireAllTodoTimelineResponse]>(value: []) private let completeTodolist = PublishSubject() + private let proofTodolist = PublishSubject() private let whichUploadingImage = PublishSubject() private let selectingLikeButton = PublishSubject() @@ -54,6 +56,7 @@ final class TodolistViewModel { let successInquireAllTodoTimeline = inquireAllTodoTimeline.compactMap { result -> [InquireAllTodoTimelineResponse]? in guard case .success(let response) = result else { return nil } + print("응답 \(response)") return response.data?.content } @@ -128,9 +131,9 @@ final class TodolistViewModel { ) .flatMapLatest(TodolistService.shared.proofTodolist) - proofTodolist.subscribe(onNext: { response in - print("인증 \(response) ") - }) + proofTodolist.subscribe(with: self) { owner, response in + owner.proofTodolist.onNext(response) + } .disposed(by: disposeBag) } @@ -192,4 +195,9 @@ extension TodolistViewModel: TodolistViewModelType { .map { $0.isChecked } .asSignal(onErrorSignalWith: .empty()) } + + var successProofTodolist: Signal { + proofTodolist + .asSignal(onErrorSignalWith: .empty()) + } } From dee5f3ced9382f5fdf91551c0681f8a3e8a77567 Mon Sep 17 00:00:00 2001 From: dlrjswns Date: Sun, 7 May 2023 18:20:30 +0900 Subject: [PATCH 14/18] =?UTF-8?q?[DEL]=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Views/Home/MainPage/ViewModel/TodolistViewModel.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/PLUB/Sources/Views/Home/MainPage/ViewModel/TodolistViewModel.swift b/PLUB/Sources/Views/Home/MainPage/ViewModel/TodolistViewModel.swift index bede1cb93..73804e961 100644 --- a/PLUB/Sources/Views/Home/MainPage/ViewModel/TodolistViewModel.swift +++ b/PLUB/Sources/Views/Home/MainPage/ViewModel/TodolistViewModel.swift @@ -56,7 +56,6 @@ final class TodolistViewModel { let successInquireAllTodoTimeline = inquireAllTodoTimeline.compactMap { result -> [InquireAllTodoTimelineResponse]? in guard case .success(let response) = result else { return nil } - print("응답 \(response)") return response.data?.content } From 23ecf64fda980e9327ebde6658c5c0c21b86493e Mon Sep 17 00:00:00 2001 From: dlrjswns Date: Sun, 7 May 2023 21:32:35 +0900 Subject: [PATCH 15/18] =?UTF-8?q?[CHORE]=20print=20->=20Log=EB=A1=9C=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PLUB/Sources/Views/Home/HomeViewController.swift | 2 +- PLUB/Sources/Views/Home/MainPage/BoardViewController.swift | 4 ++-- .../Views/Home/MainPage/TodolistViewController.swift | 4 ++-- .../Views/Home/MainPage/ViewModel/TodolistViewModel.swift | 6 +++--- .../Sources/Views/Home/RegisterInterestViewController.swift | 2 +- PLUB/Sources/Views/Home/SearchInputViewController.swift | 2 +- .../Sources/Views/Home/SelectedCategoryViewController.swift | 2 +- .../Views/Home/ViewModel/DetailRecruitmentViewModel.swift | 2 +- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/PLUB/Sources/Views/Home/HomeViewController.swift b/PLUB/Sources/Views/Home/HomeViewController.swift index da2e620d4..352320a8a 100644 --- a/PLUB/Sources/Views/Home/HomeViewController.swift +++ b/PLUB/Sources/Views/Home/HomeViewController.swift @@ -139,7 +139,7 @@ final class HomeViewController: BaseViewController { .disposed(by: disposeBag) viewModel.isBookmarked.emit(onNext: { isBookmarked in - print("해당 모집글을 북마크 \(isBookmarked)") + Log.debug("해당 모집글을 북마크 \(isBookmarked)") }) .disposed(by: disposeBag) diff --git a/PLUB/Sources/Views/Home/MainPage/BoardViewController.swift b/PLUB/Sources/Views/Home/MainPage/BoardViewController.swift index 4aa047bb4..099c3e5a2 100644 --- a/PLUB/Sources/Views/Home/MainPage/BoardViewController.swift +++ b/PLUB/Sources/Views/Home/MainPage/BoardViewController.swift @@ -131,13 +131,13 @@ final class BoardViewController: BaseViewController { viewModel.isPinnedFeed .drive(onNext: { isPinned in - print("고정 성공 !! \(isPinned)") + Log.debug("고정 성공 !! \(isPinned)") }) .disposed(by: disposeBag) viewModel.successDeleteFeed .drive(onNext: { success in - print("해당 게시글 삭제 성공") + Log.debug("해당 게시글 삭제 성공") }) .disposed(by: disposeBag) } diff --git a/PLUB/Sources/Views/Home/MainPage/TodolistViewController.swift b/PLUB/Sources/Views/Home/MainPage/TodolistViewController.swift index a236200da..80d49eb23 100644 --- a/PLUB/Sources/Views/Home/MainPage/TodolistViewController.swift +++ b/PLUB/Sources/Views/Home/MainPage/TodolistViewController.swift @@ -108,13 +108,13 @@ final class TodolistViewController: BaseViewController { viewModel.successCompleteTodolist .emit(onNext: { success in - print("투두완료성공 \(success)") + Log.debug("투두완료성공 \(success)") }) .disposed(by: disposeBag) viewModel.successProofTodolist .emit(with: self) { owner, success in - print("투두인증성공 \(success)") + Log.debug("투두인증성공 \(success)") owner.viewModel.selectPlubbingID.onNext(plubbingID) } .disposed(by: disposeBag) diff --git a/PLUB/Sources/Views/Home/MainPage/ViewModel/TodolistViewModel.swift b/PLUB/Sources/Views/Home/MainPage/ViewModel/TodolistViewModel.swift index 73804e961..238514aab 100644 --- a/PLUB/Sources/Views/Home/MainPage/ViewModel/TodolistViewModel.swift +++ b/PLUB/Sources/Views/Home/MainPage/ViewModel/TodolistViewModel.swift @@ -76,7 +76,7 @@ final class TodolistViewModel { .flatMapLatest(TodolistService.shared.completeTodolist) completeTodolist.subscribe(onNext: { response in - print("완료 \(response) ") + Log.debug("완료 \(response) ") }) .disposed(by: disposeBag) } @@ -93,7 +93,7 @@ final class TodolistViewModel { .flatMapLatest(TodolistService.shared.cancelCompleteTodolist) cancelCompleteTodolist.subscribe(onNext: { response in - print("취소완료 \(response) ") + Log.debug("취소완료 \(response) ") }) .disposed(by: disposeBag) } @@ -142,7 +142,7 @@ final class TodolistViewModel { .flatMapLatest { TodolistService.shared.likeTodolist(plubbingID: $1, timelineID: $0) } likeTodolist.subscribe(onNext: { response in - print("좋아요 응답값 \(response)") + Log.debug("좋아요 응답값 \(response)") }) .disposed(by: disposeBag) } diff --git a/PLUB/Sources/Views/Home/RegisterInterestViewController.swift b/PLUB/Sources/Views/Home/RegisterInterestViewController.swift index 2cedf7151..99ab54ead 100644 --- a/PLUB/Sources/Views/Home/RegisterInterestViewController.swift +++ b/PLUB/Sources/Views/Home/RegisterInterestViewController.swift @@ -98,7 +98,7 @@ final class RegisterInterestViewController: BaseViewController { viewModel.successRegisterInterest .withUnretained(self) .subscribe(onNext: { owner, _ in - print("관심사 등록성공") + Log.debug("관심사 등록성공") owner.navigationController?.popViewController(animated: true) }) .disposed(by: disposeBag) diff --git a/PLUB/Sources/Views/Home/SearchInputViewController.swift b/PLUB/Sources/Views/Home/SearchInputViewController.swift index 2e7b670eb..8b72846fd 100644 --- a/PLUB/Sources/Views/Home/SearchInputViewController.swift +++ b/PLUB/Sources/Views/Home/SearchInputViewController.swift @@ -171,7 +171,7 @@ final class SearchInputViewController: BaseViewController { .disposed(by: disposeBag) viewModel.isBookmarked.emit(onNext: { isBookmarked in - print("해당 모집글을 북마크 \(isBookmarked)") + Log.debug("해당 모집글을 북마크 \(isBookmarked)") }) .disposed(by: disposeBag) diff --git a/PLUB/Sources/Views/Home/SelectedCategoryViewController.swift b/PLUB/Sources/Views/Home/SelectedCategoryViewController.swift index 879625002..4008e0f47 100644 --- a/PLUB/Sources/Views/Home/SelectedCategoryViewController.swift +++ b/PLUB/Sources/Views/Home/SelectedCategoryViewController.swift @@ -104,7 +104,7 @@ final class SelectedCategoryViewController: BaseViewController { .disposed(by: disposeBag) viewModel.isBookmarked.emit(onNext: { isBookmarked in - print("해당 모집글을 북마크 \(isBookmarked)") + Log.debug("해당 모집글을 북마크 \(isBookmarked)") }) .disposed(by: disposeBag) diff --git a/PLUB/Sources/Views/Home/ViewModel/DetailRecruitmentViewModel.swift b/PLUB/Sources/Views/Home/ViewModel/DetailRecruitmentViewModel.swift index 62c5f9124..d5eb500b9 100644 --- a/PLUB/Sources/Views/Home/ViewModel/DetailRecruitmentViewModel.swift +++ b/PLUB/Sources/Views/Home/ViewModel/DetailRecruitmentViewModel.swift @@ -73,7 +73,7 @@ final class DetailRecruitmentViewModel: DetailRecruitmentViewModelType { requestEndRecruitment .subscribe(onNext: { _ in - print("[모집 끝내기] 성공했습니다") + Log.debug("[모집 끝내기] 성공했습니다") }) .disposed(by: disposeBag) From 1d698440d99606da2ba9b5302318d0a10cf7db1d Mon Sep 17 00:00:00 2001 From: dlrjswns Date: Sun, 7 May 2023 21:57:14 +0900 Subject: [PATCH 16/18] =?UTF-8?q?[ADD]=20=ED=88=AC=EB=91=90=EC=95=8C?= =?UTF-8?q?=EB=A6=BC=EC=B0=BD=EC=9D=84=20=EC=9C=84=ED=95=9C=20=EC=9D=B4?= =?UTF-8?q?=EB=AF=B8=EC=A7=80=20=EC=97=90=EC=85=8B=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../checkFilledMain.imageset/Contents.json | 23 ++++++++++++++++++ .../checkFilledMain.imageset/Group 658.png | Bin 0 -> 280 bytes .../checkFilledMain.imageset/Group 658@2x.png | Bin 0 -> 432 bytes .../checkFilledMain.imageset/Group 658@3x.png | Bin 0 -> 568 bytes 4 files changed, 23 insertions(+) create mode 100644 PLUB/Assets.xcassets/Home/Component/checkFilledMain.imageset/Contents.json create mode 100644 PLUB/Assets.xcassets/Home/Component/checkFilledMain.imageset/Group 658.png create mode 100644 PLUB/Assets.xcassets/Home/Component/checkFilledMain.imageset/Group 658@2x.png create mode 100644 PLUB/Assets.xcassets/Home/Component/checkFilledMain.imageset/Group 658@3x.png diff --git a/PLUB/Assets.xcassets/Home/Component/checkFilledMain.imageset/Contents.json b/PLUB/Assets.xcassets/Home/Component/checkFilledMain.imageset/Contents.json new file mode 100644 index 000000000..b49bc723f --- /dev/null +++ b/PLUB/Assets.xcassets/Home/Component/checkFilledMain.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Group 658.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Group 658@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Group 658@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/PLUB/Assets.xcassets/Home/Component/checkFilledMain.imageset/Group 658.png b/PLUB/Assets.xcassets/Home/Component/checkFilledMain.imageset/Group 658.png new file mode 100644 index 0000000000000000000000000000000000000000..206f03f0278fb39c995cd04195de55d5c8ead164 GIT binary patch literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&k&H|6fVg?3oVGw3ym^DWND9BhG zTH}@A;5Q# zGvOgqo{!5+30p4X_6J--X>4jji$f|^gk~?&ynn_1{`DpOkABP)@C|2>`*)e^;T%oR zciStATV$JWC>qZ@;J4+#chB8DO6-}h^4J{}0z}$PlPq~;L#{4i&AwO4RcfnvI>w|o z>WNMLg7@*a84s`b>~z)h4o<6Bb8O|5mO_)%xBU12OtL@7P#xvC#Ba}r3GFxc?qNLh X)MWO;xC3W_4rlOm^>bP0l+XkK;f!S8 literal 0 HcmV?d00001 diff --git a/PLUB/Assets.xcassets/Home/Component/checkFilledMain.imageset/Group 658@2x.png b/PLUB/Assets.xcassets/Home/Component/checkFilledMain.imageset/Group 658@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..950651dcf17fd4df78ada2124d1bfabdc4802149 GIT binary patch literal 432 zcmV;h0Z;ykP){TTD!l=_O267h8px9>_{kJux*xM(?<%4Xhz_ zZDD8FFKPOA_xs;ldL?Lv!`BO?tb0JU^{tD)6B5bW#p3*ha=CaqlDNo5hg=FN#hn2; zHF42YuitD^7kg~jXTQX&Z6QH5Rhf&(09 zFZDd3=OrKOBmw60YI$i7J_&*}YbjHdPbNFmrE;0_FeHh}u6b@|vmLfug}TsS@K&od zFWWd)jpU47x8Q0e@f-ffw`c={=m2_#A&At2-ZIl`nCXRfsvD90TIk(hKL~Lgw3r^* a$?gvc%X3xK;Hsqn0000}M{P)Pu7o@O8(thz}Y~O<631`sIe%jbVjWI)(^n^soJoY#k9{B;Nv8|~G{f2}90000 Date: Sun, 7 May 2023 21:57:43 +0900 Subject: [PATCH 17/18] =?UTF-8?q?[ADD]=20pr=EB=A6=AC=EB=B7=B0=EC=97=90=20?= =?UTF-8?q?=EB=94=B0=EB=A5=B8=20=EA=B3=B5=ED=86=B5=ED=95=A8=EC=88=98=20?= =?UTF-8?q?=EC=A3=BC=EC=84=9D=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PLUB/Configuration/Extensions/Ex+String.swift | 2 ++ 1 file changed, 2 insertions(+) diff --git a/PLUB/Configuration/Extensions/Ex+String.swift b/PLUB/Configuration/Extensions/Ex+String.swift index b91e15bfe..f5b50f7e2 100644 --- a/PLUB/Configuration/Extensions/Ex+String.swift +++ b/PLUB/Configuration/Extensions/Ex+String.swift @@ -8,6 +8,8 @@ import UIKit extension String { + + /// 라벨 취소선을 설정하는 함수입니다. func strikeThrough() -> NSAttributedString { let attributeString = NSMutableAttributedString(string: self) attributeString.addAttribute(NSAttributedString.Key.strikethroughStyle, value: NSUnderlineStyle.single.rawValue, range: NSMakeRange(0, attributeString.length)) From fa2f2172d59a6772edf013265baeff28c445f703 Mon Sep 17 00:00:00 2001 From: dlrjswns Date: Sun, 7 May 2023 21:58:25 +0900 Subject: [PATCH 18/18] =?UTF-8?q?[CHORE]=20=ED=94=BC=EA=B7=B8=EB=A7=88=20?= =?UTF-8?q?=EB=94=94=EC=9E=90=EC=9D=B8=EC=97=90=20=EB=94=B0=EB=9D=BC=20?= =?UTF-8?q?=EC=9D=B4=EB=AF=B8=EC=A7=80=EB=B7=B0=20=EC=86=8D=EC=84=B1=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Views/Home/MainPage/Component/TodoInfoView.swift | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/PLUB/Sources/Views/Home/MainPage/Component/TodoInfoView.swift b/PLUB/Sources/Views/Home/MainPage/Component/TodoInfoView.swift index 11094648c..092ad609d 100644 --- a/PLUB/Sources/Views/Home/MainPage/Component/TodoInfoView.swift +++ b/PLUB/Sources/Views/Home/MainPage/Component/TodoInfoView.swift @@ -13,9 +13,10 @@ import Then final class TodoInfoView: UIView { private let checkImageView = UIImageView().then { - $0.image = UIImage(named: "Check") - $0.backgroundColor = .main - $0.contentMode = .scaleAspectFit + $0.image = UIImage(named: "checkFilledMain") + $0.backgroundColor = .clear + $0.contentMode = .scaleAspectFill + $0.layer.masksToBounds = true } private let todoLabel = UILabel().then {