diff --git a/Neki-iOS/Features/Archive/Sources/Presentation/Sources/Components/ArchiveImageFooter.swift b/Neki-iOS/Features/Archive/Sources/Presentation/Sources/Components/ArchiveImageFooter.swift index 080b038b..298f05d4 100644 --- a/Neki-iOS/Features/Archive/Sources/Presentation/Sources/Components/ArchiveImageFooter.swift +++ b/Neki-iOS/Features/Archive/Sources/Presentation/Sources/Components/ArchiveImageFooter.swift @@ -18,12 +18,10 @@ struct ArchiveImageFooter: View { let style: ArchiveFooterStyle - /// 버튼 활성화 여부 let isEnabled: Bool - /// 즐겨찾기 상태 (상세 모드 전용) let isFavorite: Bool? + let hasMemo: Bool - // 아이콘 액션 let onDownload: () -> Void let onDelete: () -> Void let onFavorite: (() -> Void)? @@ -37,6 +35,7 @@ struct ArchiveImageFooter: View { style: ArchiveFooterStyle = .detail, isEnabled: Bool = true, isFavorite: Bool? = nil, + hasMemo: Bool = false, onDownload: @escaping () -> Void, onDelete: @escaping () -> Void, onFavorite: (() -> Void)? = nil, @@ -47,6 +46,7 @@ struct ArchiveImageFooter: View { self.style = style self.isEnabled = isEnabled self.isFavorite = isFavorite + self.hasMemo = hasMemo self.onDownload = onDownload self.onDelete = onDelete self.onFavorite = onFavorite @@ -122,14 +122,14 @@ extension ArchiveImageFooter { Text(title) .nekiFont(.body14Medium) .foregroundStyle(isEnabled ? .gray700 : .gray400) - + } .frame(maxWidth: .infinity) .contentShape(Rectangle()) } .disabled(!isEnabled) } - + private var detailModeFooter: some View { HStack(alignment: .center, spacing: 0) { Button(action: onDownload) { @@ -147,7 +147,7 @@ extension ArchiveImageFooter { if let onTapMemo = onTapMemo { Button(action: onTapMemo) { - Image(.iconNote) + Image(hasMemo ? .iconNoteFill : .iconNote) .foregroundStyle(.gray700) } .padding(.leading, 16) diff --git a/Neki-iOS/Features/Archive/Sources/Presentation/Sources/View/ArchivePhotoDetailView.swift b/Neki-iOS/Features/Archive/Sources/Presentation/Sources/View/ArchivePhotoDetailView.swift index 12c97cd0..114c5a55 100644 --- a/Neki-iOS/Features/Archive/Sources/Presentation/Sources/View/ArchivePhotoDetailView.swift +++ b/Neki-iOS/Features/Archive/Sources/Presentation/Sources/View/ArchivePhotoDetailView.swift @@ -354,6 +354,7 @@ extension ArchivePhotoDetailView { ArchiveImageFooter( isEnabled: true, isFavorite: currentItem.isFavorite, + hasMemo: !currentItem.memo.isEmpty, onDownload: { store.send(.onTapDownload) }, onDelete: { showDeleteAlert = true }, onFavorite: { store.send(.onTapFavorite) }, diff --git a/Neki-iOS/Shared/DesignSystem/Resources/Assets.xcassets/Common/icon_note.imageset/Contents.json b/Neki-iOS/Shared/DesignSystem/Resources/Assets.xcassets/Common/icon_note.imageset/Contents.json index d370cac8..780461e7 100644 --- a/Neki-iOS/Shared/DesignSystem/Resources/Assets.xcassets/Common/icon_note.imageset/Contents.json +++ b/Neki-iOS/Shared/DesignSystem/Resources/Assets.xcassets/Common/icon_note.imageset/Contents.json @@ -1,15 +1,23 @@ { "images" : [ { - "filename" : "icon_note.svg", - "idiom" : "universal" + "filename" : "icon_note1.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "icon_note2.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "icon_note3.png", + "idiom" : "universal", + "scale" : "3x" } ], "info" : { "author" : "xcode", "version" : 1 - }, - "properties" : { - "preserves-vector-representation" : true } } diff --git a/Neki-iOS/Shared/DesignSystem/Resources/Assets.xcassets/Common/icon_note.imageset/icon_note.svg b/Neki-iOS/Shared/DesignSystem/Resources/Assets.xcassets/Common/icon_note.imageset/icon_note.svg deleted file mode 100644 index 90cee9e2..00000000 --- a/Neki-iOS/Shared/DesignSystem/Resources/Assets.xcassets/Common/icon_note.imageset/icon_note.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/Neki-iOS/Shared/DesignSystem/Resources/Assets.xcassets/Common/icon_note.imageset/icon_note1.png b/Neki-iOS/Shared/DesignSystem/Resources/Assets.xcassets/Common/icon_note.imageset/icon_note1.png new file mode 100644 index 00000000..5b71bc47 Binary files /dev/null and b/Neki-iOS/Shared/DesignSystem/Resources/Assets.xcassets/Common/icon_note.imageset/icon_note1.png differ diff --git a/Neki-iOS/Shared/DesignSystem/Resources/Assets.xcassets/Common/icon_note.imageset/icon_note2.png b/Neki-iOS/Shared/DesignSystem/Resources/Assets.xcassets/Common/icon_note.imageset/icon_note2.png new file mode 100644 index 00000000..7a50294f Binary files /dev/null and b/Neki-iOS/Shared/DesignSystem/Resources/Assets.xcassets/Common/icon_note.imageset/icon_note2.png differ diff --git a/Neki-iOS/Shared/DesignSystem/Resources/Assets.xcassets/Common/icon_note.imageset/icon_note3.png b/Neki-iOS/Shared/DesignSystem/Resources/Assets.xcassets/Common/icon_note.imageset/icon_note3.png new file mode 100644 index 00000000..473a6614 Binary files /dev/null and b/Neki-iOS/Shared/DesignSystem/Resources/Assets.xcassets/Common/icon_note.imageset/icon_note3.png differ diff --git a/Neki-iOS/Shared/DesignSystem/Resources/Assets.xcassets/Common/icon_note_fill.imageset/Contents.json b/Neki-iOS/Shared/DesignSystem/Resources/Assets.xcassets/Common/icon_note_fill.imageset/Contents.json new file mode 100644 index 00000000..7078874d --- /dev/null +++ b/Neki-iOS/Shared/DesignSystem/Resources/Assets.xcassets/Common/icon_note_fill.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "icon_note_fill1.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "icon_note_fill2.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "icon_note_fill3.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Neki-iOS/Shared/DesignSystem/Resources/Assets.xcassets/Common/icon_note_fill.imageset/icon_note_fill1.png b/Neki-iOS/Shared/DesignSystem/Resources/Assets.xcassets/Common/icon_note_fill.imageset/icon_note_fill1.png new file mode 100644 index 00000000..45000520 Binary files /dev/null and b/Neki-iOS/Shared/DesignSystem/Resources/Assets.xcassets/Common/icon_note_fill.imageset/icon_note_fill1.png differ diff --git a/Neki-iOS/Shared/DesignSystem/Resources/Assets.xcassets/Common/icon_note_fill.imageset/icon_note_fill2.png b/Neki-iOS/Shared/DesignSystem/Resources/Assets.xcassets/Common/icon_note_fill.imageset/icon_note_fill2.png new file mode 100644 index 00000000..3f8443e8 Binary files /dev/null and b/Neki-iOS/Shared/DesignSystem/Resources/Assets.xcassets/Common/icon_note_fill.imageset/icon_note_fill2.png differ diff --git a/Neki-iOS/Shared/DesignSystem/Resources/Assets.xcassets/Common/icon_note_fill.imageset/icon_note_fill3.png b/Neki-iOS/Shared/DesignSystem/Resources/Assets.xcassets/Common/icon_note_fill.imageset/icon_note_fill3.png new file mode 100644 index 00000000..6844a4ab Binary files /dev/null and b/Neki-iOS/Shared/DesignSystem/Resources/Assets.xcassets/Common/icon_note_fill.imageset/icon_note_fill3.png differ diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 0b57ad4a..bcfb5bf3 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -21,30 +21,14 @@ platform :ios do readonly: true ) - # 4. 버전별 빌드 번호 자동 관리 로직 - # 현재 Xcode 프로젝트에 설정된 버전(예: 1.2.0)을 가져옵니다. - current_version = get_version_number(target: "Neki-iOS") - - # 해당 버전에서 TestFlight에 올라간 가장 높은 빌드 번호를 확인합니다. - # 만약 새 버전이라 데이터가 없다면 0을 반환합니다. - latest_build = latest_testflight_build_number( - version: current_version, - initial_build_number: 0 - ) - - # 확인된 번호에 +1을 해서 로컬 프로젝트에 적용합니다. - increment_build_number( - build_number: latest_build + 1 - ) - - # 5. 앱 빌드 및 아카이브 + # 4. 앱 빌드 및 아카이브 build_app( scheme: "Neki-iOS", configuration: "Release", export_method: "app-store" ) - # 6. TestFlight 업로드 + # 5. TestFlight 업로드 upload_to_app_store( skip_metadata: true, skip_screenshots: true,