109 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
//
 | 
						|
//  CreatorFollowNotifyDialog.swift
 | 
						|
//  SodaLive
 | 
						|
//
 | 
						|
//  Created by klaus on 9/23/24.
 | 
						|
//
 | 
						|
 | 
						|
import SwiftUI
 | 
						|
 | 
						|
struct CreatorFollowNotifyDialog: View {
 | 
						|
    
 | 
						|
    @Binding var isShowing: Bool
 | 
						|
    let onClickNotifyAll: () -> Void
 | 
						|
    let onClickNotifyNone: () -> Void
 | 
						|
    let onClickUnFollow: () -> Void
 | 
						|
    
 | 
						|
    @State private var isShow: Bool = false
 | 
						|
    
 | 
						|
    var body: some View {
 | 
						|
        ZStack {
 | 
						|
            Color.black.opacity(0.7).ignoresSafeArea()
 | 
						|
                .onTapGesture {
 | 
						|
                    isShowing = false
 | 
						|
                }
 | 
						|
            
 | 
						|
            VStack(spacing: 0) {
 | 
						|
                Spacer()
 | 
						|
                
 | 
						|
                if isShow {
 | 
						|
                    VStack(alignment: .leading, spacing: 24) {
 | 
						|
                        Text("알림")
 | 
						|
                            .font(.custom(Font.bold.rawValue, size: 18.3))
 | 
						|
                            .foregroundColor(Color.grayee)
 | 
						|
                        
 | 
						|
                        CreatorFollowNotifyItem(
 | 
						|
                            image: "ic_notify_all",
 | 
						|
                            title: "전체",
 | 
						|
                            onTapGesture: {
 | 
						|
                                isShowing = false
 | 
						|
                                onClickNotifyAll()
 | 
						|
                            }
 | 
						|
                        )
 | 
						|
                        CreatorFollowNotifyItem(
 | 
						|
                            image: "ic_notify_none",
 | 
						|
                            title: "없음",
 | 
						|
                            onTapGesture: {
 | 
						|
                                isShowing = false
 | 
						|
                                onClickNotifyNone()
 | 
						|
                            }
 | 
						|
                        )
 | 
						|
                        CreatorFollowNotifyItem(
 | 
						|
                            image: "ic_avatar_unfollow",
 | 
						|
                            title: "팔로우 취소",
 | 
						|
                            onTapGesture: {
 | 
						|
                                isShowing = false
 | 
						|
                                onClickUnFollow()
 | 
						|
                            }
 | 
						|
                        )
 | 
						|
                    }
 | 
						|
                    .frame(maxWidth:.infinity)
 | 
						|
                    .padding(.horizontal, 16)
 | 
						|
                    .padding(.top, 16)
 | 
						|
                    .padding(.bottom, 32)
 | 
						|
                    .background(Color.gray22)
 | 
						|
                    .cornerRadius(10, corners: [.topLeft, .topRight])
 | 
						|
                    .transition(.move(edge: .bottom))
 | 
						|
                    .animation(.easeInOut(duration: 0.5), value: isShow)
 | 
						|
                }
 | 
						|
            }
 | 
						|
            .ignoresSafeArea()
 | 
						|
        }
 | 
						|
        .onAppear {
 | 
						|
            withAnimation {
 | 
						|
                isShow = true
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
struct CreatorFollowNotifyItem: View {
 | 
						|
    
 | 
						|
    let image: String
 | 
						|
    let title: String
 | 
						|
    let onTapGesture: () -> Void
 | 
						|
    
 | 
						|
    var body: some View {
 | 
						|
        HStack(spacing: 16) {
 | 
						|
            Image(image)
 | 
						|
            
 | 
						|
            Text(title)
 | 
						|
                .font(.custom(Font.medium.rawValue, size: 13.3))
 | 
						|
                .foregroundColor(Color.grayee)
 | 
						|
            
 | 
						|
            Spacer()
 | 
						|
        }
 | 
						|
        .contentShape(Rectangle())
 | 
						|
        .onTapGesture(perform: onTapGesture)
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
#Preview {
 | 
						|
    CreatorFollowNotifyDialog(
 | 
						|
        isShowing: .constant(true),
 | 
						|
        onClickNotifyAll: {},
 | 
						|
        onClickNotifyNone: {},
 | 
						|
        onClickUnFollow: {}
 | 
						|
    )
 | 
						|
}
 |