커뮤니티 게시물 신고 UI 추가
This commit is contained in:
		| @@ -11,6 +11,8 @@ struct CreatorCommunityAllView: View { | |||||||
|      |      | ||||||
|     let creatorId: Int |     let creatorId: Int | ||||||
|      |      | ||||||
|  |     @State var isShowingReportView = false | ||||||
|  |      | ||||||
|     var body: some View { |     var body: some View { | ||||||
|         BaseView { |         BaseView { | ||||||
|             VStack(spacing: 0) { |             VStack(spacing: 0) { | ||||||
| @@ -26,6 +28,11 @@ struct CreatorCommunityAllView: View { | |||||||
|                     .padding(.vertical, 5.3) |                     .padding(.vertical, 5.3) | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|  |              | ||||||
|  |             if isShowingReportView { | ||||||
|  |                 CreatorCommunityReportView(isShowing: $isShowingReportView) { _ in | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -0,0 +1,96 @@ | |||||||
|  | // | ||||||
|  | //  CreatorCommunityReportView.swift | ||||||
|  | //  SodaLive | ||||||
|  | // | ||||||
|  | //  Created by klaus on 2023/12/16. | ||||||
|  | // | ||||||
|  |  | ||||||
|  | import SwiftUI | ||||||
|  |  | ||||||
|  | struct CreatorCommunityReportView: View { | ||||||
|  |     @Binding var isShowing: Bool | ||||||
|  |     let confirmAction: (String) -> Void | ||||||
|  |      | ||||||
|  |     @State private var selectedIndex: Int? = nil | ||||||
|  |     let reasons = [ | ||||||
|  |         "원치 않는 상업성 콘텐츠 또는 스팸", | ||||||
|  |         "포르노 또는 음란물", | ||||||
|  |         "아동 학대", | ||||||
|  |         "증오심 표현 또는 노골적인 폭력", | ||||||
|  |         "테러 조장", | ||||||
|  |         "괴롭힘 또는 폭력", | ||||||
|  |         "자살 또는 자해", | ||||||
|  |         "잘못된 정보" | ||||||
|  |     ] | ||||||
|  |      | ||||||
|  |     var body: some View { | ||||||
|  |         ZStack { | ||||||
|  |             Color.black | ||||||
|  |                 .opacity(0.7) | ||||||
|  |                 .ignoresSafeArea() | ||||||
|  |                 .onTapGesture { isShowing = false } | ||||||
|  |              | ||||||
|  |             VStack(spacing: 13.3) { | ||||||
|  |                 Text("게시물 신고") | ||||||
|  |                     .font(.custom(Font.medium.rawValue, size: 16.7)) | ||||||
|  |                     .foregroundColor(Color(hex: "eeeeee")) | ||||||
|  |                  | ||||||
|  |                 VStack(spacing: 13.3) { | ||||||
|  |                     ForEach(0..<reasons.count, id: \.self) { index in | ||||||
|  |                         let reason = reasons[index] | ||||||
|  |                         HStack(spacing: 8) { | ||||||
|  |                             Image(selectedIndex == index ? "btn_radio_select_selected" : "btn_radio_select_normal") | ||||||
|  |                                 .resizable() | ||||||
|  |                                 .frame(width: 20, height: 20) | ||||||
|  |                              | ||||||
|  |                             Text(reason) | ||||||
|  |                                 .font(.custom(Font.medium.rawValue, size: 14)) | ||||||
|  |                                 .foregroundColor(Color(hex: "909090")) | ||||||
|  |                              | ||||||
|  |                             Spacer() | ||||||
|  |                         } | ||||||
|  |                         .onTapGesture { | ||||||
|  |                             selectedIndex = index | ||||||
|  |                         } | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |                 .padding(.vertical, 3.3) | ||||||
|  |                  | ||||||
|  |                 HStack(spacing: 26.7) { | ||||||
|  |                     Spacer() | ||||||
|  |                      | ||||||
|  |                     Text("취소") | ||||||
|  |                         .font(.custom(Font.medium.rawValue, size: 13.3)) | ||||||
|  |                         .foregroundColor(Color(hex: "9970ff")) | ||||||
|  |                         .onTapGesture { | ||||||
|  |                             isShowing = false | ||||||
|  |                         } | ||||||
|  |                      | ||||||
|  |                     Text("신고") | ||||||
|  |                         .font(.custom(Font.medium.rawValue, size: 13.3)) | ||||||
|  |                         .foregroundColor(Color(hex: "9970ff")) | ||||||
|  |                         .onTapGesture { | ||||||
|  |                             if let selectedIndex = selectedIndex { | ||||||
|  |                                 isShowing = false | ||||||
|  |                                 confirmAction(reasons[selectedIndex]) | ||||||
|  |                             } | ||||||
|  |                         } | ||||||
|  |                 } | ||||||
|  |                 .padding(.top, 13.3) | ||||||
|  |             } | ||||||
|  |             .padding(24) | ||||||
|  |             .frame(width: screenSize().width - 33.3) | ||||||
|  |             .background(Color(hex: "222222")) | ||||||
|  |             .cornerRadius(13.3) | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | struct CreatorCommunityReportView_Previews: PreviewProvider { | ||||||
|  |     static var previews: some View { | ||||||
|  |         CreatorCommunityReportView( | ||||||
|  |             isShowing: .constant(false), | ||||||
|  |             confirmAction: { _ in } | ||||||
|  |         ) | ||||||
|  |     } | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user
	 Yu Sung
					Yu Sung