63 lines
2.2 KiB
Swift
63 lines
2.2 KiB
Swift
import SwiftUI
|
|
|
|
struct BlindBoxActionButton: View {
|
|
let phase: BlindBoxAnimationPhase
|
|
let countdownText: String
|
|
let onOpen: () -> Void
|
|
let onGoToBuy: () -> Void
|
|
|
|
var body: some View {
|
|
Button(action: {
|
|
switch phase {
|
|
case .ready:
|
|
onOpen()
|
|
case .none:
|
|
onGoToBuy()
|
|
default:
|
|
break
|
|
}
|
|
}) {
|
|
Group {
|
|
switch phase {
|
|
case .loading:
|
|
Text("Next: \(countdownText)")
|
|
.font(Typography.font(for: .body))
|
|
.fontWeight(.bold)
|
|
.frame(maxWidth: .infinity)
|
|
.padding()
|
|
.background(Color.white)
|
|
.foregroundColor(.black)
|
|
.cornerRadius(32)
|
|
case .ready:
|
|
Text("Ready")
|
|
.font(Typography.font(for: .body))
|
|
.fontWeight(.bold)
|
|
.frame(maxWidth: .infinity)
|
|
.padding()
|
|
.background(Color.themePrimary)
|
|
.foregroundColor(Color.themeTextMessageMain)
|
|
.cornerRadius(32)
|
|
case .opening:
|
|
Text("Ready")
|
|
.font(Typography.font(for: .body))
|
|
.fontWeight(.bold)
|
|
.frame(maxWidth: .infinity)
|
|
.padding()
|
|
.background(Color.themePrimary)
|
|
.foregroundColor(Color.themeTextMessageMain)
|
|
.cornerRadius(32)
|
|
default:
|
|
Text("Go to Buy")
|
|
.font(Typography.font(for: .body))
|
|
.fontWeight(.bold)
|
|
.frame(maxWidth: .infinity)
|
|
.padding()
|
|
.background(Color.themePrimary)
|
|
.foregroundColor(Color.themeTextMessageMain)
|
|
.cornerRadius(32)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|