// // 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(I18n.Dialog.LiveRoomPassword.title) .appFont(size: 18.3, weight: .bold) .foregroundColor(Color(hex: "bbbbbb")) .padding(.top, 40) Text(I18n.Dialog.LiveRoomPassword.description) .appFont(size: 13, weight: .medium) .foregroundColor(Color(hex: "bbbbbb")) .multilineTextAlignment(.center) .padding(.top, 12) .padding(.horizontal, 13.3) UserTextField( title: I18n.Dialog.LiveRoomPassword.passwordFieldTitle, hint: I18n.Dialog.LiveRoomPassword.passwordFieldPlaceholder, isSecure: false, variable: $password, keyboardType: .numberPad ) .padding(.horizontal, 13.3) .padding(.top, 13.3) HStack(spacing: 13.3) { Text(I18n.Common.cancel) .appFont(size: 15.3, weight: .bold) .foregroundColor(Color(hex: "3bb9f1")) .padding(.vertical, 16) .frame(width: (geo.size.width - 66.7) / 3) .background(Color(hex: "13181b")) .cornerRadius(8) .overlay( RoundedRectangle(cornerRadius: 8) .stroke(Color(hex: "3bb9f1"), lineWidth: 1) ) .onTapGesture { isShowing = false } if can > 0 { HStack(spacing: 0) { Text("\(can)") .appFont(size: 15.3, weight: .bold) .foregroundColor(Color(hex: "ffffff")) Image("ic_can") .resizable() .frame(width: 20, height: 20) Text(I18n.Dialog.LiveRoomPassword.enterSuffix) .appFont(size: 15.3, weight: .bold) .foregroundColor(Color(hex: "ffffff")) } .padding(.vertical, 16) .frame(width: (geo.size.width - 66.7) * 2 / 3) .background(Color(hex: "3bb9f1")) .cornerRadius(8) .onTapGesture { if password.trimmingCharacters(in: .whitespaces).isEmpty { confirmAction("") } else { confirmAction(password) } isShowing = false } } else { Text(I18n.Dialog.LiveRoomPassword.enter) .appFont(size: 15.3, weight: .bold) .foregroundColor(Color(hex: "ffffff")) .padding(.vertical, 16) .frame(width: (geo.size.width - 66.7) * 2 / 3) .background(Color(hex: "3bb9f1")) .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 } ) } }