sodalive-ios/SodaLive/Sources/Dialog/LiveRoomPasswordDialog.swift

129 lines
5.3 KiB
Swift

//
// LiveRoomPasswordDialog.swift
// SodaLive
//
// Created by klaus on 2023/08/10.
//
import SwiftUI
struct LiveRoomPasswordDialog: View {
@Binding var isShowing: Bool
let can: Int
let confirmAction: (String) -> Void
@State private var password = ""
@StateObject var keyboardHandler = KeyboardHandler()
var body: some View {
GeometryReader { geo in
ZStack {
Color.black
.opacity(0.5)
.frame(width: geo.size.width, height: geo.size.height)
VStack(spacing: 0) {
Text("비밀번호 입력")
.font(.custom(Font.bold.rawValue, size: 18.3))
.foregroundColor(Color(hex: "bbbbbb"))
.padding(.top, 40)
Text("비공개 라이브의 입장 비밀번호를\n입력해 주세요.")
.font(.custom(Font.medium.rawValue, size: 13))
.foregroundColor(Color(hex: "bbbbbb"))
.multilineTextAlignment(.center)
.padding(.top, 12)
.padding(.horizontal, 13.3)
UserTextField(
title: "비밀번호",
hint: "비밀번호를 입력해 주세요",
isSecure: false,
variable: $password,
keyboardType: .numberPad
)
.padding(.horizontal, 13.3)
.padding(.top, 13.3)
HStack(spacing: 13.3) {
Text("취소")
.font(.custom(Font.bold.rawValue, size: 15.3))
.foregroundColor(Color(hex: "9970ff"))
.padding(.vertical, 16)
.frame(width: (geo.size.width - 66.7) / 3)
.background(Color(hex: "9970ff").opacity(0.13))
.cornerRadius(8)
.overlay(
RoundedRectangle(cornerRadius: 8)
.stroke(Color(hex: "9970ff"), lineWidth: 1)
)
.onTapGesture {
isShowing = false
}
if can > 0 {
HStack(spacing: 0) {
Text("\(can)")
.font(.custom(Font.bold.rawValue, size: 15.3))
.foregroundColor(Color(hex: "ffffff"))
Image("ic_can")
Text("으로 입장")
.font(.custom(Font.bold.rawValue, size: 15.3))
.foregroundColor(Color(hex: "ffffff"))
}
.padding(.vertical, 16)
.frame(width: (geo.size.width - 66.7) * 2 / 3)
.background(Color(hex: "9970ff"))
.cornerRadius(8)
.onTapGesture {
if password.trimmingCharacters(in: .whitespaces).isEmpty {
confirmAction("")
} else {
confirmAction(password)
}
isShowing = false
}
} else {
Text("입장하기")
.font(.custom(Font.bold.rawValue, size: 15.3))
.foregroundColor(Color(hex: "ffffff"))
.padding(.vertical, 16)
.frame(width: (geo.size.width - 66.7) * 2 / 3)
.background(Color(hex: "9970ff"))
.cornerRadius(8)
.onTapGesture {
if password.trimmingCharacters(in: .whitespaces).isEmpty {
confirmAction("")
} else {
confirmAction(password)
}
isShowing = false
}
}
}
.padding(.top, 45)
.padding(.bottom, 16.7)
}
.frame(width: geo.size.width - 26.7, alignment: .center)
.background(Color(hex: "222222"))
.cornerRadius(10)
.offset(y: 0 - (keyboardHandler.keyboardHeight / 3))
}
}
}
}
struct LiveRoomPasswordDialog_Previews: PreviewProvider {
static var previews: some View {
LiveRoomPasswordDialog(
isShowing: .constant(true),
can: 10,
confirmAction: { _ in }
)
}
}