Add popular bet

pull/28/head
Emre KARTAL 11 months ago
parent 68e8c4d41c
commit b700938539

@ -13,7 +13,7 @@ struct BetCard: View {
var bet: Bet var bet: Bet
@State var showDetails: Bool = false @State var showDetails: Bool = false
@State var showParticipate: Bool = false @State var showParticipate: Bool = false
var body: some View { var body: some View {
VStack(spacing: 0) { VStack(spacing: 0) {
VStack(alignment: .leading,spacing: 2){ VStack(alignment: .leading,spacing: 2){
@ -63,12 +63,11 @@ struct BetCard: View {
.cornerRadius(20, corners: [.bottomLeft,.bottomRight]) .cornerRadius(20, corners: [.bottomLeft,.bottomRight])
.border(width: 1, edges: [.top], color: AllInColors.delimiterGrey) .border(width: 1, edges: [.top], color: AllInColors.delimiterGrey)
} }
.onTapGesture { .onTapGesture {
showDetails.toggle() showDetails.toggle()
} }
.fullScreenCover(isPresented: $showDetails) { .fullScreenCover(isPresented: $showDetails) {
DetailsView(isModalPresented: $showDetails, isModalParticipated: $showParticipate,id: bet.id) DetailsView(isModalPresented: $showDetails, isModalParticipated: $showParticipate, id: bet.id)
} }
} }
} }

@ -6,8 +6,13 @@
// //
import SwiftUI import SwiftUI
import Model
struct TrendingBetCard: View { struct TrendingBetCard: View {
var bet: Bet
@State var showDetails: Bool = false
var body: some View { var body: some View {
VStack(alignment: .leading) { VStack(alignment: .leading) {
HStack { HStack {
@ -20,7 +25,7 @@ struct TrendingBetCard: View {
} }
.padding([.leading, .top], 10) .padding([.leading, .top], 10)
Text("Emre va réussir son TP de CI/CD mercredi?") Text(bet.theme)
.textStyle(weight: .heavy, color: .white, size: 17) .textStyle(weight: .heavy, color: .white, size: 17)
.frame(height: 47) .frame(height: 47)
.multilineTextAlignment(.leading) .multilineTextAlignment(.leading)
@ -61,6 +66,14 @@ struct TrendingBetCard: View {
struct TrendingBetCard_Previews: PreviewProvider { struct TrendingBetCard_Previews: PreviewProvider {
static var previews: some View { static var previews: some View {
TrendingBetCard() TrendingBetCard(bet: BinaryBet(theme: "Football - Finale de la Ligue des Champions",
phrase: "Le gagnant de la finale sera l'équipe avec le plus de tirs au but.",
endRegisterDate: Date().addingTimeInterval(86400),
endBetDate: Date().addingTimeInterval(172800),
isPublic: true,
status: .inProgress,
invited: [],
author: "Imri",
registered: []))
} }
} }

@ -14,6 +14,7 @@ class BetViewModel: ObservableObject {
@Inject var manager: Manager @Inject var manager: Manager
@Published var popularBet: Bet?
@Published private(set) var bets: [Bet] = [] @Published private(set) var bets: [Bet] = []
@Published var betsOver: [BetDetail] = [] @Published var betsOver: [BetDetail] = []
@Published var showingSheet: Bool = false @Published var showingSheet: Bool = false
@ -25,6 +26,7 @@ class BetViewModel: ObservableObject {
init() { init() {
getItems() getItems()
getPopularBet()
} }
func getItems() { func getItems() {
@ -42,4 +44,12 @@ class BetViewModel: ObservableObject {
} }
} }
} }
func getPopularBet() {
manager.getPopularBet() { bet in
DispatchQueue.main.async {
self.popularBet = bet
}
}
}
} }

@ -20,7 +20,11 @@ struct BetView: View {
ScrollView(showsIndicators: false) { ScrollView(showsIndicators: false) {
LazyVStack(alignment: .leading, spacing: 0, pinnedViews: [.sectionHeaders]) { LazyVStack(alignment: .leading, spacing: 0, pinnedViews: [.sectionHeaders]) {
TrendingBetCard().padding(.top,25).padding([.leading,.trailing],25) if let bet = viewModel.popularBet {
TrendingBetCard(bet: bet)
.padding(.top,25)
.padding([.leading,.trailing],25)
}
Section { Section {
VStack(spacing: 20){ VStack(spacing: 20){
@ -62,14 +66,5 @@ struct BetView: View {
} }
.edgesIgnoringSafeArea(.bottom) .edgesIgnoringSafeArea(.bottom)
.background(AllInColors.backgroundColor) .background(AllInColors.backgroundColor)
}
}
struct BetView_Previews: PreviewProvider {
static var previews: some View {
BetView(showMenu: .constant(false))
.preferredColorScheme(.light)
} }
} }

@ -86,4 +86,30 @@ public struct BetApiManager: BetDataManager {
} }
}.resume() }.resume()
} }
public func getPopularBet(completion: @escaping (Bet) -> Void) {
let url = URL(string: allInApi + "bets/popular")!
var request = URLRequest(url: url)
request.httpMethod = "GET"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization")
URLSession.shared.dataTask(with: request) { data, response, error in
if let data = data {
print ("ALLIN : get popular bet")
do {
if let httpResponse = response as? HTTPURLResponse, let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] {
if let bet = FactoryApiBet().toBet(from: json) {
completion(bet)
}
print(httpResponse.statusCode)
}
} catch {
print("Error parsing JSON: \(error)")
}
}
}.resume()
}
} }

@ -206,7 +206,7 @@ public struct UserApiManager: UserDataManager {
URLSession.shared.dataTask(with: request) { data, response, error in URLSession.shared.dataTask(with: request) { data, response, error in
if let data = data { if let data = data {
print ("ALLIN : get current bets") print ("ALLIN : get old bets")
do { do {
if let httpResponse = response as? HTTPURLResponse, let jsonArray = try JSONSerialization.jsonObject(with: data, options: []) as? [[String: Any]] { if let httpResponse = response as? HTTPURLResponse, let jsonArray = try JSONSerialization.jsonObject(with: data, options: []) as? [[String: Any]] {
for json in jsonArray { for json in jsonArray {

@ -11,4 +11,6 @@ public protocol BetDataManager {
func getBets(withIndex index: Int, withCount count: Int, filters: [BetFilter], completion: @escaping ([Bet]) -> Void) func getBets(withIndex index: Int, withCount count: Int, filters: [BetFilter], completion: @escaping ([Bet]) -> Void)
func getUsers(username: String) -> [User] func getUsers(username: String) -> [User]
func getBet(withId id: String, completion: @escaping (BetDetail) -> Void) func getBet(withId id: String, completion: @escaping (BetDetail) -> Void)
func getPopularBet(completion: @escaping (Bet) -> Void)
} }

@ -70,6 +70,12 @@ public struct Manager {
} }
} }
public func getPopularBet(completion: @escaping (Bet) -> Void) {
betDataManager.getPopularBet() { bet in
completion(bet)
}
}
public func getCurrentBets(withIndex index: Int, withCount count: Int, completion: @escaping ([BetDetail]) -> Void) { public func getCurrentBets(withIndex index: Int, withCount count: Int, completion: @escaping ([BetDetail]) -> Void) {
userDataManager.getCurrentBets(withIndex: index, withCount: count) { bets in userDataManager.getCurrentBets(withIndex: index, withCount: count) { bets in
completion(bets) completion(bets)

@ -29,6 +29,10 @@ public struct BetStubManager: BetDataManager {
} }
} }
public func getPopularBet(completion: @escaping (Bet) -> Void) {
}
public func getABetDetail() -> BetDetail{ public func getABetDetail() -> BetDetail{
Stub.shared.betsDetail.first! Stub.shared.betsDetail.first!
} }

Loading…
Cancel
Save