You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Apple/Sources/AllInApp/AllIn/Components/ParticipationModal.swift

126 lines
4.3 KiB

//
// ParticipationModal.swift
// AllIn
//
// Created by Lucas Delanier on 16/01/2024.
//
import SwiftUI
struct ParticipationModal: View {
@Binding private var selectedOption: Int
@Binding private var mise: String
private var description: String
var participationAddedCallback: (() -> Void)?
init(answer: Binding<Int>, mise: Binding<String>, description: String, participationAddedCallback: (() -> Void)? = nil) {
self._selectedOption = answer
self._mise = mise
self.description = description
self.participationAddedCallback = participationAddedCallback
}
let options: [(Int, String, Float)] = [
(0, "OUI", 1.2),
(1, "NON", 3.3),
]
var body: some View {
VStack(alignment: .leading){
HStack{
Spacer()
Rectangle()
.foregroundStyle(AllInColors.grey800Color)
.frame(maxWidth: 80, maxHeight: 5)
.cornerRadius(999)
Spacer()
}.padding(10)
HStack{
Text("Faites vos paris")
.font(.system(size: 18))
.foregroundColor(AllInColors.primaryTextColor)
.fontWeight(.semibold)
Spacer()
AllcoinsCounter(backgroundColor: AllInColors.purpleAccentColor, foregroundColor: .white)
}
.padding(.leading, 15)
VStack(alignment: .leading){
Text(description)
.font(.system(size: 13))
.foregroundColor(AllInColors.primaryTextColor)
.fontWeight(.light)
DropDownAnswerMenu(selectedOption: $selectedOption, options: options)
TextField("",text: $mise, prompt: Text("Mise")
.foregroundColor(AllInColors.lightGrey300Color)
.font(.system(size: 14))
.fontWeight(.bold))
.padding()
.keyboardType(.numberPad)
.background(
RoundedRectangle(cornerRadius: 9)
.fill(AllInColors.lightGrey200Color)
.frame(height: 40)
)
.frame(width: .infinity, height: 40)
.foregroundColor(.black)
.overlay(
RoundedRectangle(cornerRadius: 10, style: .continuous)
.stroke(AllInColors.delimiterGrey, lineWidth: 1)
)
.padding(.bottom, 5)
}
.padding(15)
Spacer()
VStack{
HStack{
Text("Gains possibles")
.font(.system(size: 13))
.foregroundColor(AllInColors.primaryTextColor)
.fontWeight(.regular)
Spacer()
Text("231")
.font(.system(size: 13))
.foregroundColor(AllInColors.primaryTextColor)
.fontWeight(.light)
}
.padding(.top, 10).padding(.bottom, 0)
Button {
participationAddedCallback?()
} label: {
Text("Miser")
.font(.system(size: 23))
.foregroundColor(AllInColors.whiteColor)
.fontWeight(.bold)
.frame(maxWidth: .infinity)
.padding(.vertical, 3)
}
.buttonStyle(.borderedProminent)
.tint(AllInColors.purpleAccentColor)
.disabled(checkAndSetError())
}
.padding(.horizontal, 10)
.background(AllInColors.whiteColor)
.border(width: 1, edges: [.top], color: AllInColors.delimiterGrey)
}
.background(AllInColors.underComponentBackgroundColor)
}
func checkAndSetError() -> Bool {
if let stake = Int(mise) {
if stake <= AppStateContainer.shared.user?.nbCoins ?? 0 {
return false
} else {
return true
}
} else {
return true
}
}
}