diff --git a/Sources/AllInApp/AllIn/Components/BinaryBetLine.swift b/Sources/AllInApp/AllIn/Components/BinaryBetLine.swift index 68fb4ab..cdc8932 100644 --- a/Sources/AllInApp/AllIn/Components/BinaryBetLine.swift +++ b/Sources/AllInApp/AllIn/Components/BinaryBetLine.swift @@ -52,13 +52,13 @@ struct BinaryBetLine: View { HStack{ Spacer() Rectangle() - .frame(width: min(CGFloat(1-self.value) * geometry.size.width, geometry.size.width), height: 17) + .frame(width: min(CGFloat(1-self.value) * geometry.size.width, geometry.size.width-20), height: 17) .foregroundStyle(AllInColors.PinkBetGradiant).cornerRadius(999) } HStack(spacing: 0) { 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-20), height: 17) .foregroundStyle(AllInColors.BlueBetGradiant) .cornerRadius(999) Image("loadingHeartIcon") diff --git a/Sources/AllInApp/AllIn/Components/CustomBetLine.swift b/Sources/AllInApp/AllIn/Components/CustomBetLine.swift index e452c5e..de5eceb 100644 --- a/Sources/AllInApp/AllIn/Components/CustomBetLine.swift +++ b/Sources/AllInApp/AllIn/Components/CustomBetLine.swift @@ -34,7 +34,7 @@ struct CustomBetLine: View { } func getFlameImage(for answer: AnswerDetail) -> String { - return answer == sortedAnswers.first ? "PinkFlame" : "BlueFlame" + return answer == sortedAnswers.first ? "pinkFlame" : "blueFlame" } var body: some View { @@ -57,7 +57,7 @@ struct CustomBetLine: View { ZStack(alignment: .leading) { HStack(spacing: 0) { Rectangle() - .frame(width: min(percentage * geometry.size.width, geometry.size.width), height: 17) + .frame(width: min(percentage * geometry.size.width, geometry.size.width-20), height: 17) .foregroundStyle(getGradiant(for: answer)) .cornerRadius(999, corners: [.topLeft, .bottomLeft]) Image(getFlameImage(for: answer)) diff --git a/Sources/AllInApp/AllIn/Components/DropDownAnswerMenu.swift b/Sources/AllInApp/AllIn/Components/DropDownAnswerMenu.swift index f0c39a7..91f009b 100644 --- a/Sources/AllInApp/AllIn/Components/DropDownAnswerMenu.swift +++ b/Sources/AllInApp/AllIn/Components/DropDownAnswerMenu.swift @@ -20,7 +20,7 @@ struct DropDownAnswerMenu: View { HStack{ Text(selectedAnswer.response) .textStyle(weight: .bold, color: AllInColors.blueAccentColor, size: 20) - Text(selectedAnswer.odds.description) + Text("\(selectedAnswer.odds, specifier: "%.2f")") .textStyle(weight: .bold, color: AllInColors.lightPurpleColor, size: 10) Spacer() @@ -44,7 +44,7 @@ struct DropDownAnswerMenu: View { HStack{ Text(answer.response) .textStyle(weight: .bold, color: AllInColors.blueAccentColor, size: 20) - Text(answer.odds.description) + Text("\(answer.odds, specifier: "%.2f")") .textStyle(weight: .bold, color: AllInColors.lightPurpleColor, size: 10) Spacer() } diff --git a/Sources/AllInApp/AllIn/Components/Menu.swift b/Sources/AllInApp/AllIn/Components/Menu.swift index 333901e..aed26b4 100644 --- a/Sources/AllInApp/AllIn/Components/Menu.swift +++ b/Sources/AllInApp/AllIn/Components/Menu.swift @@ -12,7 +12,6 @@ struct Menu: View { @Inject var authService: IAuthService - let parameters: [(String, String, String, String)] = [ ("videoGameImage", String(localized: "drawer_create_a_bet"), String(localized: "drawer_create_a_bet_subtitle"), "CreationBet"), ("globeImage", String(localized: "drawer_public_bets"), String(localized: "drawer_public_bets_subtitle"), "Bet"), @@ -40,7 +39,7 @@ struct Menu: View { HStack(spacing: 30) { Spacer() VStack(){ - Text(AppStateContainer.shared.user?.bestWin.description ?? "0") + Text(AppStateContainer.shared.user?.bestWin ?? 0, format: .number) .fontWeight(.heavy) .font(.system(size: 15)) .foregroundColor(.white) @@ -50,7 +49,7 @@ struct Menu: View { .foregroundColor(AllInColors.grey600Color) } VStack(){ - Text(AppStateContainer.shared.user?.bestWin.description ?? "0") + Text(AppStateContainer.shared.user!.bestWin, format: .number) .fontWeight(.heavy) .font(.system(size: 15)) .foregroundColor(.white) @@ -60,7 +59,7 @@ struct Menu: View { .foregroundColor(AllInColors.grey600Color) } VStack(){ - Text(AppStateContainer.shared.user?.nbFriends.description ?? "0") + Text(AppStateContainer.shared.user!.nbFriends, format: .number) .fontWeight(.heavy) .font(.system(size: 15)) .foregroundColor(.white) @@ -104,6 +103,9 @@ struct Menu: View { .frame(maxWidth: .infinity,alignment: .leading) .background(AllInColors.primaryColor) .edgesIgnoringSafeArea(.bottom) + .onAppear { + authService.refreshAuthentication() + } } } diff --git a/Sources/AllInApp/AllIn/Components/OddCapsule.swift b/Sources/AllInApp/AllIn/Components/OddCapsule.swift index 67844dd..a658e29 100644 --- a/Sources/AllInApp/AllIn/Components/OddCapsule.swift +++ b/Sources/AllInApp/AllIn/Components/OddCapsule.swift @@ -14,7 +14,7 @@ struct OddCapsule: View { var odd: Float = 0.0 var body: some View { HStack(alignment: .center) { - Text("x\(odd.description)") + Text("x\(odd, specifier: "%.2f")") .fontWeight(.bold) .foregroundColor(foregroundColor) } diff --git a/Sources/AllInApp/AllIn/Components/RecapBetCard.swift b/Sources/AllInApp/AllIn/Components/RecapBetCard.swift index fc52509..ead4c59 100644 --- a/Sources/AllInApp/AllIn/Components/RecapBetCard.swift +++ b/Sources/AllInApp/AllIn/Components/RecapBetCard.swift @@ -73,7 +73,7 @@ struct RecapBetCard: View { .overlay { AllInColors.primaryGradient.frame(width: 50) .mask( - Text("1630").font(.system(size: 15)).fontWeight(.medium) + Text(betResult.amount.description).font(.system(size: 15)).fontWeight(.medium) ) } .padding(0) @@ -89,7 +89,8 @@ struct RecapBetCard: View { HStack{ Text("Côte totale").font(.system(size: 15)).fontWeight(.medium) Spacer() - Text("3,46") + // TODO bind le odd + Text("1,0") .textStyle(weight: .bold, color: .white, size: 18) .padding([.leading,.trailing],10) .padding([.top,.bottom],5) diff --git a/Sources/AllInApp/AllIn/Components/ResultBanner.swift b/Sources/AllInApp/AllIn/Components/ResultBanner.swift index b29f321..74bbda7 100644 --- a/Sources/AllInApp/AllIn/Components/ResultBanner.swift +++ b/Sources/AllInApp/AllIn/Components/ResultBanner.swift @@ -19,16 +19,16 @@ struct ResultBanner: View { }.frame(height: 80) HStack(spacing: 20){ HStack{ - Image("BlueAllCoinIcon").resizable().frame(maxWidth: 12, maxHeight: 12) + Image("blueAllCoinIcon").resizable().frame(maxWidth: 12, maxHeight: 12) Text(finalAnswer.stake.description).font(.system(size: 16)).fontWeight(.semibold).foregroundStyle(AllInColors.blueGrey800Color) } HStack{ - Image("BleuePersonIcon").resizable().frame(maxWidth: 15, maxHeight: 12) + Image("bluePersonIcon").resizable().frame(maxWidth: 15, maxHeight: 12) Text(finalAnswer.username).font(.system(size: 16)).fontWeight(.semibold).foregroundStyle(AllInColors.blueGrey800Color) } HStack{ - Image("BleueTrophyIcon").resizable().frame(maxWidth: 15, maxHeight: 12) - Text(odds.description).font(.system(size: 16)).fontWeight(.semibold).foregroundStyle(AllInColors.blueGrey800Color) + Image("blueTrophyIcon").resizable().frame(maxWidth: 15, maxHeight: 12) + Text("\(odds, specifier: "%.2f")").font(.system(size: 16)).fontWeight(.semibold).foregroundStyle(AllInColors.blueGrey800Color) } } } diff --git a/Sources/AllInApp/AllIn/Components/ReviewCard.swift b/Sources/AllInApp/AllIn/Components/ReviewCard.swift index c04b9d3..47a3263 100644 --- a/Sources/AllInApp/AllIn/Components/ReviewCard.swift +++ b/Sources/AllInApp/AllIn/Components/ReviewCard.swift @@ -42,13 +42,15 @@ struct ReviewCard: View { VStack(alignment: .center,spacing:0){ HStack(){ Spacer() - Text(amount.description) - .foregroundColor(.white) - .font(.system(size: 25)) - .fontWeight(.bold) - Image("allcoinWhiteIcon") - .resizable() - .frame(width: 18, height: 20) + if bet.status == .finished { + Text(amount.description) + .foregroundColor(.white) + .font(.system(size: 25)) + .fontWeight(.bold) + Image("allcoinWhiteIcon") + .resizable() + .frame(width: 18, height: 20) + } switch bet.status { case .waiting, .inProgress: diff --git a/Sources/AllInApp/AllIn/Ressources/en.lproj/Localizable.strings b/Sources/AllInApp/AllIn/Ressources/en.lproj/Localizable.strings index d95e2d9..a5e1f8a 100644 --- a/Sources/AllInApp/AllIn/Ressources/en.lproj/Localizable.strings +++ b/Sources/AllInApp/AllIn/Ressources/en.lproj/Localizable.strings @@ -178,7 +178,7 @@ /// Notification "notification_title_end_bet_date" = "Who will be the winners?"; -"notification_subtitle_end_bet_date %@" = "The %@ bet has reached its deadline. Go to the app to enter the winning answer.";` +"notification_subtitle_end_bet_date %@" = "The %@ bet has reached its deadline. Go to the app to enter the winning answer."; /// Empty Views diff --git a/Sources/AllInApp/AllIn/Ressources/fr.lproj/Localizable.strings b/Sources/AllInApp/AllIn/Ressources/fr.lproj/Localizable.strings index e781668..d0d0e06 100644 --- a/Sources/AllInApp/AllIn/Ressources/fr.lproj/Localizable.strings +++ b/Sources/AllInApp/AllIn/Ressources/fr.lproj/Localizable.strings @@ -28,6 +28,7 @@ "network_error_text" = "Assurez-vous d\'être bien connecté au réseau puis réessayez."; /// Bet type + "bet_type_binary" = "Oui / Non"; "bet_type_match" = "Match sportif"; "bet_type_custom" = "Réponses personnalisées"; diff --git a/Sources/AllInApp/AllIn/ViewModels/BetViewModel.swift b/Sources/AllInApp/AllIn/ViewModels/BetViewModel.swift index 553c951..0169f35 100644 --- a/Sources/AllInApp/AllIn/ViewModels/BetViewModel.swift +++ b/Sources/AllInApp/AllIn/ViewModels/BetViewModel.swift @@ -13,7 +13,7 @@ import Combine class BetViewModel: ObservableObject { @Inject var manager: Manager - + @Inject var authService: IAuthService @Published var popularBet: Bet? @Published private(set) var bets: [Bet] = [] @Published var betsOver: [BetDetail] = [] @@ -58,6 +58,7 @@ class BetViewModel: ObservableObject { self.betsWon = bets if !self.betsWon.isEmpty { self.showingSheetWon = true + self.authService.refreshAuthentication() } } } diff --git a/Sources/AllInApp/AllIn/ViewModels/DetailsViewModel.swift b/Sources/AllInApp/AllIn/ViewModels/DetailsViewModel.swift index 913a165..790035c 100644 --- a/Sources/AllInApp/AllIn/ViewModels/DetailsViewModel.swift +++ b/Sources/AllInApp/AllIn/ViewModels/DetailsViewModel.swift @@ -26,13 +26,20 @@ class DetailsViewModel: ObservableObject { } func getItem(withId id: String) { + let semaphore = DispatchSemaphore(value: 0) manager.getBet(withId: id) { bet in - DispatchQueue.main.async { self.betDetail = bet if let firstAnswer = bet.answers.first { self.selectedAnswer = firstAnswer } - } + semaphore.signal() + } + + let result = semaphore.wait(timeout: DispatchTime.now() + .seconds(2)) + + if result == .timedOut { + print("The request has exceeded the deadline") + return } } diff --git a/Sources/AllInApp/AllIn/Views/DetailsView.swift b/Sources/AllInApp/AllIn/Views/DetailsView.swift index 3472e83..2e3d144 100644 --- a/Sources/AllInApp/AllIn/Views/DetailsView.swift +++ b/Sources/AllInApp/AllIn/Views/DetailsView.swift @@ -59,7 +59,7 @@ struct DetailsView: View { .background(StatusValues.1) if viewModel.betDetail != nil{ ScrollView { - VStack(alignment: .leading, spacing: 5) { + VStack(alignment: .leading, spacing: 0) { HStack(spacing: 3) { Spacer() Text("bet_proposed_by_format") @@ -132,6 +132,7 @@ struct DetailsView: View { Spacer() } .padding([.trailing,.leading], 15) + .padding(.bottom, 100) } .frame(maxWidth: .infinity, maxHeight: (geometry.size.height + geometry.safeAreaInsets.bottom) - 50) diff --git a/Sources/AllInApp/AllIn/Views/FriendsView.swift b/Sources/AllInApp/AllIn/Views/FriendsView.swift index e1240d3..8ad9dbd 100644 --- a/Sources/AllInApp/AllIn/Views/FriendsView.swift +++ b/Sources/AllInApp/AllIn/Views/FriendsView.swift @@ -64,22 +64,26 @@ struct FriendsView: View { } .padding(.top, 50) .tag(0) - VStack(alignment: .center, spacing: 0) { - if(viewModel.requests.isEmpty){ - EmptyInfo(emoji:"📬", title: "Aucune demande d'amis en attente", explain: "").padding(.top, 40) - } - else{ - ScrollView(showsIndicators: false){ - ForEach(viewModel.requests, id: \.self) { request in - Friend(user: request, isRequest: true, viewModel: viewModel) - } + ScrollView{ + VStack(alignment: .center, spacing: 0) { + if(viewModel.requests.isEmpty){ + EmptyInfo(emoji:"📬", title: "Aucune demande d'amis en attente", explain: "").padding(.top, 40) } - .refreshable { - viewModel.getRequests() + else{ + ScrollView(showsIndicators: false){ + ForEach(viewModel.requests, id: \.self) { request in + Friend(user: request, isRequest: true, viewModel: viewModel) + } + } + .refreshable { + viewModel.getRequests() + } + .padding(.top, 25) } - .padding(.top, 25) + Spacer() } - Spacer() + }.refreshable { + viewModel.getRequests() } .padding(.top, 50) .tag(1) diff --git a/Sources/AllInApp/AllInApp.xcodeproj/project.pbxproj b/Sources/AllInApp/AllInApp.xcodeproj/project.pbxproj index aaa866b..2871978 100644 --- a/Sources/AllInApp/AllInApp.xcodeproj/project.pbxproj +++ b/Sources/AllInApp/AllInApp.xcodeproj/project.pbxproj @@ -936,7 +936,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_ASSET_PATHS = "\"AllIn/Preview Content\""; - DEVELOPMENT_TEAM = 35KQ5BDC64; + DEVELOPMENT_TEAM = P39ZK4GA2T; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_CFBundleDisplayName = "All In"; @@ -970,7 +970,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_ASSET_PATHS = "\"AllIn/Preview Content\""; - DEVELOPMENT_TEAM = 35KQ5BDC64; + DEVELOPMENT_TEAM = P39ZK4GA2T; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_CFBundleDisplayName = "All In"; @@ -1074,7 +1074,7 @@ CODE_SIGN_ENTITLEMENTS = AllInWidgetsExtension.entitlements; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 35KQ5BDC64; + DEVELOPMENT_TEAM = P39ZK4GA2T; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = AllInWidgets/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = AllInWidgets; @@ -1102,7 +1102,7 @@ CODE_SIGN_ENTITLEMENTS = AllInWidgetsExtension.entitlements; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 35KQ5BDC64; + DEVELOPMENT_TEAM = P39ZK4GA2T; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = AllInWidgets/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = AllInWidgets; diff --git a/Sources/DependencyInjection/DependencyInjection.xcodeproj/project.pbxproj b/Sources/DependencyInjection/DependencyInjection.xcodeproj/project.pbxproj index 5162e18..e3afa76 100644 --- a/Sources/DependencyInjection/DependencyInjection.xcodeproj/project.pbxproj +++ b/Sources/DependencyInjection/DependencyInjection.xcodeproj/project.pbxproj @@ -343,7 +343,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 35KQ5BDC64; + DEVELOPMENT_TEAM = P39ZK4GA2T; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; @@ -382,7 +382,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 35KQ5BDC64; + DEVELOPMENT_TEAM = P39ZK4GA2T; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath";