diff --git a/src/Projects/BKData/Sources/DTO/Request/InsertRecordRequestDTO.swift b/src/Projects/BKData/Sources/DTO/Request/InsertRecordRequestDTO.swift index ed094d72..6b5d6efc 100644 --- a/src/Projects/BKData/Sources/DTO/Request/InsertRecordRequestDTO.swift +++ b/src/Projects/BKData/Sources/DTO/Request/InsertRecordRequestDTO.swift @@ -6,13 +6,13 @@ import Foundation struct InsertRecordRequestDTO: Encodable { let pageNumber: Int let quote: String - let review: String + let review: String? let emotionTags: [String] init( pageNumber: Int, quote: String, - review: String, + review: String?, emotionTags: [String] ) { self.pageNumber = pageNumber diff --git a/src/Projects/BKData/Sources/DTO/Response/DetailRecordResponseDTO.swift b/src/Projects/BKData/Sources/DTO/Response/DetailRecordResponseDTO.swift index d3068f28..d0303ad5 100644 --- a/src/Projects/BKData/Sources/DTO/Response/DetailRecordResponseDTO.swift +++ b/src/Projects/BKData/Sources/DTO/Response/DetailRecordResponseDTO.swift @@ -8,7 +8,7 @@ public struct DetailRecordResponseDTO: Decodable { public let userBookId: String public let pageNumber: Int public let quote: String - public let review: String + public let review: String? public let emotionTags: [Emotion] public let createdAt: String public let updatedAt: String diff --git a/src/Projects/BKData/Sources/DTO/Response/InsertRecordResponseDTO.swift b/src/Projects/BKData/Sources/DTO/Response/InsertRecordResponseDTO.swift index 02982775..ec86c90a 100644 --- a/src/Projects/BKData/Sources/DTO/Response/InsertRecordResponseDTO.swift +++ b/src/Projects/BKData/Sources/DTO/Response/InsertRecordResponseDTO.swift @@ -8,7 +8,7 @@ public struct InsertRecordResponseDTO: Decodable { let userBookId: String let pageNumber: Int let quote: String - let review: String + let review: String? let emotionTags: [Emotion] let createdAt: String let updatedAt: String diff --git a/src/Projects/BKDomain/Sources/Entity/RecordInfo.swift b/src/Projects/BKDomain/Sources/Entity/RecordInfo.swift index 3319f668..1ce26dd6 100644 --- a/src/Projects/BKDomain/Sources/Entity/RecordInfo.swift +++ b/src/Projects/BKDomain/Sources/Entity/RecordInfo.swift @@ -7,7 +7,7 @@ public struct RecordInfo: Decodable, Equatable { public let bookId: String public let pageNumber: Int public let quote: String - public let review: String + public let review: String? public let emotionTags: [Emotion] public let createdAt: Date public let updatedAt: Date? @@ -21,7 +21,7 @@ public struct RecordInfo: Decodable, Equatable { bookId: String, pageNumber: Int, quote: String, - review: String, + review: String?, emotionTags: [Emotion], createdAt: Date, updatedAt: Date?, diff --git a/src/Projects/BKDomain/Sources/VO/RecordDetails/RecordVO.swift b/src/Projects/BKDomain/Sources/VO/RecordDetails/RecordVO.swift index c51aee05..e43607d4 100644 --- a/src/Projects/BKDomain/Sources/VO/RecordDetails/RecordVO.swift +++ b/src/Projects/BKDomain/Sources/VO/RecordDetails/RecordVO.swift @@ -5,13 +5,13 @@ import Foundation public struct RecordVO { public let pageNumber: Int public let quote: String - public let review: String + public let review: String? public let emotionTags: [String] public init( pageNumber: Int, quote: String, - review: String, + review: String?, emotionTags: [String] ) { self.pageNumber = pageNumber diff --git a/src/Projects/BKPresentation/Sources/MainFlow/Note/ViewModel/NoteForm.swift b/src/Projects/BKPresentation/Sources/MainFlow/Note/ViewModel/NoteForm.swift index 3334967e..560fe43d 100644 --- a/src/Projects/BKPresentation/Sources/MainFlow/Note/ViewModel/NoteForm.swift +++ b/src/Projects/BKPresentation/Sources/MainFlow/Note/ViewModel/NoteForm.swift @@ -6,7 +6,7 @@ struct NoteForm: Equatable { let page: Int let sentence: String let emotion: Emotion - let appreciation: String + let appreciation: String? } extension NoteForm { diff --git a/src/Projects/BKPresentation/Sources/MainFlow/NoteCompletion/View/AppreciationResultView.swift b/src/Projects/BKPresentation/Sources/MainFlow/NoteCompletion/View/AppreciationResultView.swift index fcbfb45a..ea26209d 100644 --- a/src/Projects/BKPresentation/Sources/MainFlow/NoteCompletion/View/AppreciationResultView.swift +++ b/src/Projects/BKPresentation/Sources/MainFlow/NoteCompletion/View/AppreciationResultView.swift @@ -139,12 +139,20 @@ final class AppreciationResultView: BaseView { func apply( emotion: EmotionIcon, creationDate: Date, - appreciation: String + appreciation: String? = "" ) { emotionIcon.image = emotion.icon emotionLabel.setText(text: emotion.rawValue) creationLabel.setText(text: creationDate.toKoreanDateString()) - appreciationLabel.setText(text: appreciation) + + if let review = appreciation, !review.isEmpty { + appreciationLabel.setText(text: review) + appreciationLabel.isHidden = false + rootStack.spacing = LayoutConstants.rootStackSpacing + } else { + appreciationLabel.isHidden = true + rootStack.spacing = 0 + } } } diff --git a/src/Projects/BKPresentation/Sources/MainFlow/NoteCompletion/View/NoteCompletionView.swift b/src/Projects/BKPresentation/Sources/MainFlow/NoteCompletion/View/NoteCompletionView.swift index ffd6aa59..a8383508 100644 --- a/src/Projects/BKPresentation/Sources/MainFlow/NoteCompletion/View/NoteCompletionView.swift +++ b/src/Projects/BKPresentation/Sources/MainFlow/NoteCompletion/View/NoteCompletionView.swift @@ -46,7 +46,7 @@ final class NoteCompletionView: BaseView { appreciationResultView.apply( emotion: EmotionIcon.from(emotion: recordInfo.emotionTags.first ?? .joy), creationDate: recordInfo.createdAt, - appreciation: recordInfo.review + appreciation: recordInfo.review ?? "" ) } diff --git a/src/Projects/BKPresentation/Sources/MainFlow/NoteEdit/View/NoteEditView.swift b/src/Projects/BKPresentation/Sources/MainFlow/NoteEdit/View/NoteEditView.swift index 3b8bef5e..44fbc513 100644 --- a/src/Projects/BKPresentation/Sources/MainFlow/NoteEdit/View/NoteEditView.swift +++ b/src/Projects/BKPresentation/Sources/MainFlow/NoteEdit/View/NoteEditView.swift @@ -248,8 +248,10 @@ final class NoteEditView: BaseView { pageField.setText("\(recordInfo.pageNumber)") sentenceTextView.setText(recordInfo.quote) - appreciationTextView.setText(recordInfo.review) + if let review = recordInfo.review { + appreciationTextView.setText(review) + } // 감정 라벨은 selectedEmotion 바인딩에서만 설정 } diff --git a/src/Projects/BKPresentation/Sources/MainFlow/NoteEdit/ViewModel/NoteEditViewModel.swift b/src/Projects/BKPresentation/Sources/MainFlow/NoteEdit/ViewModel/NoteEditViewModel.swift index ceba46aa..5d69aef7 100644 --- a/src/Projects/BKPresentation/Sources/MainFlow/NoteEdit/ViewModel/NoteEditViewModel.swift +++ b/src/Projects/BKPresentation/Sources/MainFlow/NoteEdit/ViewModel/NoteEditViewModel.swift @@ -23,7 +23,7 @@ final class NoteEditViewModel: BaseViewModel { case errorHandled case presentEmotionEdit case emotionSelected(Emotion) - case saveButtonTapped(formData: (page: Int?, sentence: String, appreciation: String)) + case saveButtonTapped(formData: (page: Int?, sentence: String, appreciation: String?)) case patchRecordSuccessed(RecordInfo) case deleteButtonTapped case deleteRecordSuccessed @@ -95,9 +95,8 @@ final class NoteEditViewModel: BaseViewModel { case .saveButtonTapped(let formData): guard let selectedEmotion = state.selectedEmotion, let page = formData.page, - !formData.sentence.isEmpty, - !formData.appreciation.isEmpty else { - break + !formData.sentence.isEmpty else { + break } let noteForm = NoteForm(