Added and used the bet status enum instead of dates, and set the size of the betLineLoading

pull/23/head
Emre KARTAL 1 year ago
parent 65c49e1b40
commit ff9e9f6ed2

@ -80,7 +80,7 @@ struct BetCard_Previews: PreviewProvider {
endRegisterDate: Date().addingTimeInterval(86400), endRegisterDate: Date().addingTimeInterval(86400),
endBetDate: Date().addingTimeInterval(172800), endBetDate: Date().addingTimeInterval(172800),
isPublic: true, isPublic: true,
status: .FINISHED, status: .inProgress,
invited: [], invited: [],
author: User(username: "Imri", email: "emre.kartal@etu.uca.fr", nbCoins: 75, friends: []), author: User(username: "Imri", email: "emre.kartal@etu.uca.fr", nbCoins: 75, friends: []),
registered: [])) registered: []))

@ -33,9 +33,8 @@ struct BetLineLoading: View {
} }
var body: some View { var body: some View {
GeometryReader { geometry in VStack(alignment: .leading, spacing: 0) {
VStack(alignment: .leading,spacing: 0) { HStack(spacing: 5) {
HStack(spacing: 5){
Text("OUI") Text("OUI")
.font(.system(size: 25)) .font(.system(size: 25))
.fontWeight(.bold) .fontWeight(.bold)
@ -46,6 +45,8 @@ struct BetLineLoading: View {
.fontWeight(.bold) .fontWeight(.bold)
.foregroundColor(AllInColors.pink100) .foregroundColor(AllInColors.pink100)
} }
GeometryReader { geometry in
ZStack(alignment: .leading) { ZStack(alignment: .leading) {
HStack{ HStack{
Spacer() Spacer()
@ -54,7 +55,7 @@ struct BetLineLoading: View {
.foregroundStyle(AllInColors.PinkBetGradiant).cornerRadius(999) .foregroundStyle(AllInColors.PinkBetGradiant).cornerRadius(999)
} }
HStack(spacing: 0){ HStack(spacing: 0) {
Rectangle() Rectangle()
.frame(width: min(CGFloat(self.value) * geometry.size.width, geometry.size.width), height: 17) .frame(width: min(CGFloat(self.value) * geometry.size.width, geometry.size.width), height: 17)
.foregroundStyle(AllInColors.BlueBetGradiant) .foregroundStyle(AllInColors.BlueBetGradiant)
@ -67,6 +68,8 @@ struct BetLineLoading: View {
} }
.padding(.bottom, 5) .padding(.bottom, 5)
}
.frame(height: 40)
HStack { HStack {
Spacer() Spacer()
@ -86,8 +89,8 @@ struct BetLineLoading: View {
.padding(.trailing, 5) .padding(.trailing, 5)
if showInfos { if showInfos {
VStack(spacing: 1){ VStack(spacing: 1) {
HStack(spacing: 5){ HStack(spacing: 5) {
Image("blueAllCoinIcon") Image("blueAllCoinIcon")
.resizable() .resizable()
.frame(width:12, height: 12) .frame(width:12, height: 12)
@ -103,7 +106,6 @@ struct BetLineLoading: View {
Image("pinkAllCoinIcon") Image("pinkAllCoinIcon")
.resizable() .resizable()
.frame(width: 12, height: 12) .frame(width: 12, height: 12)
} }
HStack(spacing: 5){ HStack(spacing: 5){
Image("bluePersonIcon") Image("bluePersonIcon")
@ -157,12 +159,9 @@ struct BetLineLoading: View {
Image("pinkTrophyIcon") Image("pinkTrophyIcon")
.resizable() .resizable()
.frame(width:12, height: 12) .frame(width:12, height: 12)
} }
} }
} }
Spacer()
}
} }
} }
} }

@ -15,16 +15,14 @@ struct ParticipateButton: View {
var bet: Bet? var bet: Bet?
var isDisabled: Bool { var isDisabled: Bool {
guard let endRegisterDate = bet?.endRegisterDate else { if let betType = bet?.status {
switch betType {
case .inProgress:
return false
default:
return true return true
} }
} else {
let currentDate = Date()
switch currentDate.compare(endRegisterDate) {
case .orderedAscending:
return false
case .orderedDescending, .orderedSame:
return true return true
} }
} }

@ -38,7 +38,7 @@ class CreationBetViewModel: ObservableObject {
resetAllFieldErrors() resetAllFieldErrors()
if let user = AppStateContainer.shared.user { if let user = AppStateContainer.shared.user {
manager.addBet(bet: toBet(theme: theme, description: description, endRegister: endRegisterDate, endBet: endBetDate, isPublic: isPublic, status: .IN_PROGRESS, creator: user, type: selectedOption)) { statusCode in manager.addBet(bet: toBet(theme: theme, description: description, endRegister: endRegisterDate, endBet: endBetDate, isPublic: isPublic, status: .inProgress, creator: user, type: selectedOption)) { statusCode in
switch statusCode { switch statusCode {
case 201: case 201:
self.betAdded = true self.betAdded = true

@ -13,7 +13,7 @@ class CurrentBetViewModel: ObservableObject {
@Inject var manager: Manager @Inject var manager: Manager
@Published private(set) var bets: [Bet] = [] @Published private(set) var bets: [BetDetail] = []
init() { init() {
getItems() getItems()
@ -21,7 +21,10 @@ class CurrentBetViewModel: ObservableObject {
func getItems() { func getItems() {
manager.getCurrentBets(withIndex: 0, withCount: 20) { bets in manager.getCurrentBets(withIndex: 0, withCount: 20) { bets in
self.bets = bets for bet in bets {
let betDetail = BetDetail(bet: bet, answers: [AnswerDetail(response: "OUI", totalStakes: 120, totalParticipants: 2, highestStake: 200, odds: 1.2), AnswerDetail(response: "NON", totalStakes: 120, totalParticipants: 2, highestStake: 200, odds: 1.2)], participations: [])
self.bets.append(betDetail)
}
} }
} }

@ -14,10 +14,8 @@ struct CurrentBetView: View {
@StateObject private var viewModel = CurrentBetViewModel() @StateObject private var viewModel = CurrentBetViewModel()
@Binding var showMenu: Bool @Binding var showMenu: Bool
@State private var showingSheet = false @State private var showingSheet = false
var betD: BetDetail = BetStubManager().getABetDetail()
var body: some View { var body: some View {
VStack(alignment: .center, spacing: 0) { VStack(alignment: .center, spacing: 0) {
TopBar(showMenu: self.$showMenu) TopBar(showMenu: self.$showMenu)
@ -26,8 +24,8 @@ struct CurrentBetView: View {
.textStyle(weight: .bold, color: AllInColors.grey500Color, size: 25) .textStyle(weight: .bold, color: AllInColors.grey500Color, size: 25)
.padding([.top],15) .padding([.top],15)
VStack(spacing: 20){ VStack(spacing: 20){
ForEach(viewModel.bets, id: \.id) { (bet: Bet) in ForEach(viewModel.bets, id: \.bet.id) { (bet: BetDetail) in
ReviewCard(betDetail: betD, amountBetted: 110, isAWin: false) ReviewCard(betDetail: bet, amountBetted: 110, isAWin: false)
} }
} }
.padding([.trailing, .leading, .bottom],25) .padding([.trailing, .leading, .bottom],25)

@ -13,36 +13,20 @@ struct DetailsView: View {
viewModel.betDetail?.finalAnswer == nil ? false : true viewModel.betDetail?.finalAnswer == nil ? false : true
} }
var isDisabled: Bool {
if let endRegisterDate = viewModel.betDetail?.bet.endRegisterDate {
let currentDate = Date()
switch currentDate.compare(endRegisterDate) {
case .orderedAscending:
return false
case .orderedDescending:
return true
case .orderedSame:
return true
}
} else {
return true
}
}
var StatusValues: (String, Color) { var StatusValues: (String, Color) {
if let endRegisterDate = viewModel.betDetail?.bet.endRegisterDate { if let betType = viewModel.betDetail?.bet.status {
let currentDate = Date() switch betType {
case .inProgress:
switch currentDate.compare(endRegisterDate) {
case .orderedAscending:
return ("En cours...", AllInColors.darkPurpleColor) return ("En cours...", AllInColors.darkPurpleColor)
case .orderedDescending: case .waiting:
return ("En attente...", AllInColors.pink100) return ("En attente...", AllInColors.pink100)
case .orderedSame: case .closing:
return ("Fin des inscriptions...", AllInColors.grey50Color) return ("Fin des inscriptions...", AllInColors.grey50Color)
case .finished:
return ("Terminé", AllInColors.grey100Color)
case .cancelled:
return ("Annulé", AllInColors.grey100Color)
} }
} else { } else {
return ("Statut indisponible", AllInColors.pink100) return ("Statut indisponible", AllInColors.pink100)
} }
@ -150,7 +134,6 @@ struct DetailsView: View {
Spacer() Spacer()
} }
.frame(maxWidth: /*@START_MENU_TOKEN@*/.infinity/*@END_MENU_TOKEN@*/, maxHeight: .infinity)
.padding([.bottom,.trailing,.leading], 15) .padding([.bottom,.trailing,.leading], 15)
.background(AllInColors.underComponentBackgroundColor) .background(AllInColors.underComponentBackgroundColor)
.border(width: 1, edges: [.top], color: AllInColors.delimiterGrey) .border(width: 1, edges: [.top], color: AllInColors.delimiterGrey)

@ -56,7 +56,7 @@ public class FactoryApiBet: FactoryBet {
return nil return nil
} }
return toBet(id: id, theme: theme, description: phrase, endRegister: endRegisterDate, endBet: endBetDate, isPublic: isPublic, status: .FINISHED, creator: User(username: createdBy, email: createdBy, nbCoins: 0, friends: []), type: type) return toBet(id: id, theme: theme, description: phrase, endRegister: endRegisterDate, endBet: endBetDate, isPublic: isPublic, status: .finished, creator: User(username: createdBy, email: createdBy, nbCoins: 0, friends: []), type: type)
} }
public func toBet(id: String, theme: String, description: String, endRegister: Date, endBet: Date, isPublic: Bool, status: BetStatus, creator: User, type: String) -> Bet { public func toBet(id: String, theme: String, description: String, endRegister: Date, endBet: Date, isPublic: Bool, status: BetStatus, creator: User, type: String) -> Bet {

@ -12,7 +12,6 @@ public class CustomBetResponse {
/// The name or description of the custom bet response. /// The name or description of the custom bet response.
public var name: String public var name: String
/// Custom Constructor /// Custom Constructor
/// ///
/// - Parameters: /// - Parameters:

@ -8,5 +8,5 @@
import Foundation import Foundation
public enum BetStatus { public enum BetStatus {
case WAITING, IN_PROGRESS, FINISHED case inProgress, waiting, closing, finished, cancelled
} }

@ -38,7 +38,7 @@ struct Stub {
endRegisterDate: Date().addingTimeInterval(-86400), endRegisterDate: Date().addingTimeInterval(-86400),
endBetDate: Date().addingTimeInterval(172800), endBetDate: Date().addingTimeInterval(172800),
isPublic: true, isPublic: true,
status: .IN_PROGRESS, status: .inProgress,
invited: [], invited: [],
author: user1, author: user1,
registered: [user2] registered: [user2]
@ -51,7 +51,7 @@ struct Stub {
endRegisterDate: Date().addingTimeInterval(172800), endRegisterDate: Date().addingTimeInterval(172800),
endBetDate: Date().addingTimeInterval(259200), endBetDate: Date().addingTimeInterval(259200),
isPublic: false, isPublic: false,
status: .IN_PROGRESS, status: .inProgress,
invited: [user3], invited: [user3],
author: user1, author: user1,
registered: [user2] registered: [user2]
@ -64,7 +64,7 @@ struct Stub {
endRegisterDate: Date().addingTimeInterval(259200), endRegisterDate: Date().addingTimeInterval(259200),
endBetDate: Date().addingTimeInterval(345600), endBetDate: Date().addingTimeInterval(345600),
isPublic: true, isPublic: true,
status: .FINISHED, status: .finished,
invited: [], invited: [],
author: user1, author: user1,
registered: [user2, user1, user3] registered: [user2, user1, user3]
@ -77,7 +77,7 @@ struct Stub {
endRegisterDate: Date().addingTimeInterval(345600), endRegisterDate: Date().addingTimeInterval(345600),
endBetDate: Date().addingTimeInterval(432000), endBetDate: Date().addingTimeInterval(432000),
isPublic: false, isPublic: false,
status: .FINISHED, status: .finished,
invited: [user1], invited: [user1],
author: user2, author: user2,
registered: [user3] registered: [user3]

Loading…
Cancel
Save