From a940c747d76b8571656e0fe3eaec642f35307972 Mon Sep 17 00:00:00 2001 From: ludelanier Date: Mon, 15 Jan 2024 17:02:20 +0100 Subject: [PATCH] change logic displayng modal --- .../AllInApp/AllIn/Components/BetCard.swift | 98 ++++++++----------- .../AllIn/Components/ParticipateButton.swift | 25 ++++- .../AllIn/Components/RecapBetCard.swift | 6 ++ .../AllIn/Components/ResultBanner.swift | 24 ++++- .../AllIn/Components/ReviewCard.swift | 6 ++ .../AllIn/Extensions/Extensions.swift | 39 ++++++++ .../AllInApp/AllIn/Ressources/Colors.swift | 1 + .../AllIn/ViewModels/LoginViewModel.swift | 4 + Sources/AllInApp/AllIn/Views/BetView.swift | 82 ++++++++-------- .../AllInApp/AllIn/Views/DetailsView.swift | 82 ++++++++++++++-- Sources/AllInApp/AllIn/Views/MainView.swift | 2 + .../AllInApp.xcodeproj/project.pbxproj | 12 +++ 12 files changed, 274 insertions(+), 107 deletions(-) diff --git a/Sources/AllInApp/AllIn/Components/BetCard.swift b/Sources/AllInApp/AllIn/Components/BetCard.swift index b58bb1e..a1d3eda 100644 --- a/Sources/AllInApp/AllIn/Components/BetCard.swift +++ b/Sources/AllInApp/AllIn/Components/BetCard.swift @@ -8,68 +8,54 @@ import SwiftUI struct BetCard: View { + @State var showDetails: Bool = false var body: some View { - VStack(spacing: 0){ - VStack(alignment: .leading,spacing: 2){ - HStack{ - Spacer() - Text("proposé par Lucas").font(.system(size: 10)).foregroundColor(AllInColors.grey800Color) - - } - Text("Etudes").font(.system(size: 15)).foregroundColor(AllInColors.grey800Color) - Text("Emre va réussir son TP de CI/CD mercredi?").font(.system(size: 20)).fontWeight(.bold) - HStack{ - Text("Commence le").font(.system(size: 15)).foregroundColor(AllInColors.grey800Color) - TextCapsule() - TextCapsule() - Spacer() - + ZStack{ + VStack(spacing: 0){ + VStack(alignment: .leading,spacing: 2){ + HStack{ + Spacer() + Text("proposé par Lucas").font(.system(size: 10)).foregroundColor(AllInColors.grey800Color) + + } + Text("Etudes").font(.system(size: 15)).foregroundColor(AllInColors.grey800Color) + Text("Emre va réussir son TP de CI/CD mercredi?").font(.system(size: 20)).fontWeight(.bold) + HStack{ + Text("Commence le").font(.system(size: 15)).foregroundColor(AllInColors.grey800Color) + TextCapsule() + TextCapsule() + Spacer() + + } } - } - .frame(width: .infinity) - .padding(.all,15) - .background(AllInColors.componentBackgroundColor).cornerRadius(20, corners: [.topLeft,.topRight]).padding(.bottom,0) - - VStack(alignment: .leading,spacing: 2){ - HStack{ - Spacer() - UsersPreview() - Text(" 4 joueurs en attente").font(.system(size: 15)).foregroundColor(AllInColors.grey800Color).fontWeight(.medium) - - Spacer() - - }.padding(0) - Button { + .frame(width: .infinity) + .padding(.all,15) + .background(AllInColors.componentBackgroundColor).cornerRadius(20, corners: [.topLeft,.topRight]).padding(.bottom,0) + + VStack(alignment: .leading,spacing: 2){ + HStack{ + Spacer() + UsersPreview() + Text(" 4 joueurs en attente").font(.system(size: 15)).foregroundColor(AllInColors.grey800Color).fontWeight(.medium) + + Spacer() + + }.padding(0) + ParticipateButton().padding(.top, 5) - } label: { - Text("Participer") - .font(.system(size: 30)) - .fontWeight(.bold) - .frame(maxWidth: .infinity).padding(10) - .multilineTextAlignment(.center) - .overlay { - AllInColors.primaryGradient.frame(width: 170) - .mask( - Text("Participer") - .font(.system(size: 30)) - .fontWeight(.bold) - .frame(maxWidth: .infinity).padding(10) - ) - } } - .accentColor(AllInColors.componentBackgroundColor) - .buttonStyle(.borderedProminent).cornerRadius(4.0) - .overlay( - RoundedRectangle(cornerRadius: 12).stroke(AllInColors.delimiterGrey, lineWidth: 1) - ).padding([.top],5) - + .frame(width: .infinity) + .padding(.all,8) + .background(AllInColors.underComponentBackgroundColor) + .cornerRadius(20, corners: [.bottomLeft,.bottomRight]) + .border(width: 1, edges: [.top], color: AllInColors.delimiterGrey) } - .frame(width: .infinity) - .padding(.all,8) - .background(AllInColors.underComponentBackgroundColor) - .cornerRadius(20, corners: [.bottomLeft,.bottomRight]) - .border(width: 1, edges: [.top], color: AllInColors.delimiterGrey) + }.onTapGesture { + showDetails.toggle() + }.fullScreenCover(isPresented: $showDetails) { + DetailsView(isModalPresented: $showDetails) } + } } diff --git a/Sources/AllInApp/AllIn/Components/ParticipateButton.swift b/Sources/AllInApp/AllIn/Components/ParticipateButton.swift index 5cb234e..02c40c6 100644 --- a/Sources/AllInApp/AllIn/Components/ParticipateButton.swift +++ b/Sources/AllInApp/AllIn/Components/ParticipateButton.swift @@ -9,7 +9,30 @@ import SwiftUI struct ParticipateButton: View { var body: some View { - Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + Button { + + } label: { + Text("Participer") + .font(.system(size: 30)) + .fontWeight(.bold) + .frame(maxWidth: .infinity).padding(10) + .multilineTextAlignment(.center) + .overlay { + AllInColors.primaryGradient.frame(width: 170) + .mask( + Text("Participer") + .font(.system(size: 30)) + .fontWeight(.bold) + .frame(maxWidth: .infinity).padding(10) + ) + } + } + .accentColor(AllInColors.componentBackgroundColor) + .buttonStyle(.borderedProminent).cornerRadius(4.0) + .overlay( + RoundedRectangle(cornerRadius: 12).stroke(AllInColors.delimiterGrey, lineWidth: 1) + ) + } } diff --git a/Sources/AllInApp/AllIn/Components/RecapBetCard.swift b/Sources/AllInApp/AllIn/Components/RecapBetCard.swift index 418804a..06c8203 100644 --- a/Sources/AllInApp/AllIn/Components/RecapBetCard.swift +++ b/Sources/AllInApp/AllIn/Components/RecapBetCard.swift @@ -11,6 +11,7 @@ struct RecapBetCard: View { @GestureState private var longPressTap = false @State private var isPressed = false + @State var showDetails: Bool = false var body: some View { VStack(spacing: 0){ VStack(alignment: .leading,spacing: 2){ @@ -104,6 +105,11 @@ struct RecapBetCard: View { .padding(.bottom,0).border(width: 1, edges: [.top], color: AllInColors.delimiterGrey) }.scaleEffect(longPressTap ? 0.97 : 1.0) .animation(.easeInOut, value: longPressTap) + .onTapGesture { + showDetails.toggle() + }.fullScreenCover(isPresented: $showDetails) { + DetailsView(isModalPresented: $showDetails) + } .gesture( LongPressGesture(minimumDuration: 0.5) .updating($longPressTap) { value, state, _ in diff --git a/Sources/AllInApp/AllIn/Components/ResultBanner.swift b/Sources/AllInApp/AllIn/Components/ResultBanner.swift index 2b9b09c..91b201d 100644 --- a/Sources/AllInApp/AllIn/Components/ResultBanner.swift +++ b/Sources/AllInApp/AllIn/Components/ResultBanner.swift @@ -9,7 +9,29 @@ import SwiftUI struct ResultBanner: View { var body: some View { - Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + VStack{ + HStack{ + Image("BleueTrophyIcon").resizable().frame(maxWidth: 70, maxHeight: 60) + Text("OUI").font(.system(size: 70)).fontWeight(.bold).foregroundStyle(AllInColors.blueGrey800Color) + }.frame(height: 80) + HStack(spacing: 20){ + HStack{ + Image("BlueAllCoinIcon").resizable().frame(maxWidth: 12, maxHeight: 12) + Text("460").font(.system(size: 16)).fontWeight(.semibold).foregroundStyle(AllInColors.blueGrey800Color) + } + HStack{ + Image("BleuePersonIcon").resizable().frame(maxWidth: 15, maxHeight: 12) + Text("ImriDu43").font(.system(size: 16)).fontWeight(.semibold).foregroundStyle(AllInColors.blueGrey800Color) + } + HStack{ + Image("BleueTrophyIcon").resizable().frame(maxWidth: 15, maxHeight: 12) + Text("x1.2").font(.system(size: 16)).fontWeight(.semibold).foregroundStyle(AllInColors.blueGrey800Color) + } + } + } + .frame(maxWidth: /*@START_MENU_TOKEN@*/.infinity/*@END_MENU_TOKEN@*/) + .padding(.vertical, 20).background(AllInColors.winBannerBackground) + .border(width: 2, edges: [.top,.bottom], color: AllInColors.blueAccentColor.opacity(0.2)) } } diff --git a/Sources/AllInApp/AllIn/Components/ReviewCard.swift b/Sources/AllInApp/AllIn/Components/ReviewCard.swift index 8ff8846..0859507 100644 --- a/Sources/AllInApp/AllIn/Components/ReviewCard.swift +++ b/Sources/AllInApp/AllIn/Components/ReviewCard.swift @@ -8,6 +8,7 @@ import SwiftUI struct ReviewCard: View { + @State var showDetails: Bool = false var amountBetted: Int var isAWin: Bool @@ -67,5 +68,10 @@ struct ReviewCard: View { ) .cornerRadius(20, corners: [.bottomLeft,.bottomRight]) .border(width: 1, edges: [.top], color: AllInColors.delimiterGrey) } + .onTapGesture { + showDetails.toggle() + }.fullScreenCover(isPresented: $showDetails) { + DetailsView(isModalPresented: $showDetails) + } } } diff --git a/Sources/AllInApp/AllIn/Extensions/Extensions.swift b/Sources/AllInApp/AllIn/Extensions/Extensions.swift index 74732e0..a79953c 100644 --- a/Sources/AllInApp/AllIn/Extensions/Extensions.swift +++ b/Sources/AllInApp/AllIn/Extensions/Extensions.swift @@ -83,3 +83,42 @@ extension View { } } } + +struct SlideInFromBottomTransition: ViewModifier { + var yOffset: CGFloat + + func body(content: Content) -> some View { + content + .offset(y: yOffset) + .animation(.easeInOut(duration: 0.3)) + } +} + +extension AnyTransition { + static func slideInFromBottom(yOffset: CGFloat) -> AnyTransition { + AnyTransition.modifier( + active: SlideInFromBottomTransition(yOffset: yOffset), + identity: SlideInFromBottomTransition(yOffset: 0) + ) + } +} + +struct SlideOutToBottomTransition: ViewModifier { + var yOffset: CGFloat + + func body(content: Content) -> some View { + content + .offset(y: yOffset) + .opacity(yOffset == 0 ? 1 : 0) + .animation(.easeInOut(duration: 0.3)) + } +} + +extension AnyTransition { + static func slideOutToBottom(yOffset: CGFloat) -> AnyTransition { + AnyTransition.modifier( + active: SlideOutToBottomTransition(yOffset: yOffset), + identity: SlideOutToBottomTransition(yOffset: 0) + ) + } +} diff --git a/Sources/AllInApp/AllIn/Ressources/Colors.swift b/Sources/AllInApp/AllIn/Ressources/Colors.swift index 2f53a3e..a8eba0a 100644 --- a/Sources/AllInApp/AllIn/Ressources/Colors.swift +++ b/Sources/AllInApp/AllIn/Ressources/Colors.swift @@ -47,6 +47,7 @@ struct AllInColors { static let lightGrey300Color = Color("LightGrey300Color") static let componentBackgroundColor = Color("ComponentBackgroundColor") static let underComponentBackgroundColor = Color("UnderComponentBackgroundColor") + static let winBannerBackground = Color("WinBannerBackground") // Gradients static let primaryGradient = LinearGradient( diff --git a/Sources/AllInApp/AllIn/ViewModels/LoginViewModel.swift b/Sources/AllInApp/AllIn/ViewModels/LoginViewModel.swift index 2d5e698..f0e465f 100644 --- a/Sources/AllInApp/AllIn/ViewModels/LoginViewModel.swift +++ b/Sources/AllInApp/AllIn/ViewModels/LoginViewModel.swift @@ -23,6 +23,10 @@ class LoginViewModel: ObservableObject { func login() { + #if DEBUG + self.onLoginSuccess() + #endif + guard checkAndSetError(forLogin: true, forPassword: true) else { return } diff --git a/Sources/AllInApp/AllIn/Views/BetView.swift b/Sources/AllInApp/AllIn/Views/BetView.swift index 1ef638f..8aac2a4 100644 --- a/Sources/AllInApp/AllIn/Views/BetView.swift +++ b/Sources/AllInApp/AllIn/Views/BetView.swift @@ -11,61 +11,65 @@ struct BetView: View { @StateObject private var viewModel = BetViewModel() @Binding var showMenu: Bool - @State private var showingSheet = false + @State var showingSheet: Bool = false var body: some View { - - VStack(alignment: .center, spacing: 0) { + ZStack(){ - TopBar(showMenu: self.$showMenu) - ScrollView(showsIndicators: false) { - LazyVStack(alignment: .leading, spacing: 0, pinnedViews: [.sectionHeaders]) { - - TrendingBetCard().padding(.top,25).padding([.leading,.trailing],25) - - Section { - VStack(spacing: 20){ - BetCard() - BetCard() - Button("Show Sheet") { - showingSheet.toggle() - } - .sheet(isPresented: $showingSheet) { - WinModal() - } - } - .padding([.leading,.trailing],25) + VStack(alignment: .center, spacing: 0) { + + + TopBar(showMenu: self.$showMenu) + ScrollView(showsIndicators: false) { + LazyVStack(alignment: .leading, spacing: 0, pinnedViews: [.sectionHeaders]) { + + TrendingBetCard().padding(.top,25).padding([.leading,.trailing],25) - } header: { - ZStack{ - AllInColors.fadeInGradiantCard - ScrollView(.horizontal,showsIndicators: false){ - HStack{ - ChoiceCapsule() - ChoiceCapsule() - ChoiceCapsule() - ChoiceCapsule() - ChoiceCapsule() - ChoiceCapsule() - ChoiceCapsule() + Section { + VStack(spacing: 20){ + BetCard() + Button("Show Sheet") { + showingSheet.toggle() + } + + } + .padding([.leading,.trailing],25) + + } header: { + ZStack{ + AllInColors.fadeInGradiantCard + ScrollView(.horizontal,showsIndicators: false){ + HStack{ + ChoiceCapsule() + ChoiceCapsule() + ChoiceCapsule() + ChoiceCapsule() + ChoiceCapsule() + ChoiceCapsule() + ChoiceCapsule() + } + .padding(.leading,25) + .padding([.top,.bottom],15) } - .padding(.leading,25) - .padding([.top,.bottom],15) } } } } + .sheet(isPresented: $showingSheet) { + WinModal() + } + Spacer() } - Spacer() + .edgesIgnoringSafeArea(.bottom) + .background(AllInColors.backgroundColor) + } - .edgesIgnoringSafeArea(.bottom) - .background(AllInColors.backgroundColor) } } struct BetView_Previews: PreviewProvider { static var previews: some View { BetView(showMenu: .constant(false)) - .preferredColorScheme(.dark) + .preferredColorScheme(.light) } } diff --git a/Sources/AllInApp/AllIn/Views/DetailsView.swift b/Sources/AllInApp/AllIn/Views/DetailsView.swift index 599844c..d739ba0 100644 --- a/Sources/AllInApp/AllIn/Views/DetailsView.swift +++ b/Sources/AllInApp/AllIn/Views/DetailsView.swift @@ -1,18 +1,80 @@ -// -// DetailsView.swift -// AllIn -// -// Created by Lucas Delanier on 12/01/2024. -// - import SwiftUI struct DetailsView: View { + @Binding var isModalPresented: Bool var body: some View { - Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + GeometryReader { geometry in + ZStack(alignment: .bottom) { + VStack(alignment: .trailing) { + HStack{ + Spacer() + Image("CloseiconRounded") + .resizable() + .padding(8) + .frame(maxWidth: 40, maxHeight: 40) + .onTapGesture { + isModalPresented = false + } + } + Spacer() + } + .frame(maxWidth: .infinity, maxHeight: .infinity) + .background(Color.green) + .transition(.slideInFromBottom(yOffset:0)) + VStack(spacing: 0) { + VStack(alignment: .leading,spacing: 5){ + HStack{ + Spacer() + Text("proposé par Lucas").font(.system(size: 10)).foregroundColor(AllInColors.grey800Color) + + } + Text("Etudes").font(.system(size: 15)).foregroundColor(AllInColors.grey800Color) + Text("Emre va réussir son TP de CI/CD mercredi?").font(.system(size: 20)).fontWeight(.bold).padding(.bottom, 10) + HStack{ + Text("Commence le").frame(maxWidth: 100).font(.system(size: 15)).foregroundColor(AllInColors.grey800Color) + TextCapsule() + TextCapsule() + Spacer() + + }.padding(.bottom, 10) + HStack{ + Text("Fini le").frame(maxWidth: 100).font(.system(size: 15)).foregroundColor(AllInColors.grey800Color) + TextCapsule() + TextCapsule() + Spacer() + + } + } + .frame(width: .infinity) + .padding(.all,15).padding(.vertical, 10) + .background(AllInColors.componentBackgroundColor).cornerRadius(20, corners: [.topLeft,.topRight]).padding(.bottom,0) + ResultBanner() + VStack(alignment: .leading,spacing: 2){ + + + + } + .frame(maxWidth: /*@START_MENU_TOKEN@*/.infinity/*@END_MENU_TOKEN@*/, maxHeight : .infinity) + .padding([.bottom,.trailing,.leading],8) + .background(AllInColors.underComponentBackgroundColor) + .border(width: 1, edges: [.top], color: AllInColors.delimiterGrey) + Spacer() + + + } + .frame(maxWidth: .infinity, maxHeight: geometry.size.height*0.98) + .background(Color.white) + .cornerRadius(15) + ParticipateButton().padding(10) + } + .transition(.slideInFromBottom(yOffset: 800)) + .edgesIgnoringSafeArea(.bottom) + } } } -#Preview { - DetailsView() +struct DetailsView_Previews: PreviewProvider { + static var previews: some View { + ContentView() + } } diff --git a/Sources/AllInApp/AllIn/Views/MainView.swift b/Sources/AllInApp/AllIn/Views/MainView.swift index 790873f..9b7900a 100644 --- a/Sources/AllInApp/AllIn/Views/MainView.swift +++ b/Sources/AllInApp/AllIn/Views/MainView.swift @@ -10,6 +10,7 @@ import SwiftUI struct MainView: View { @State var showMenu = false + var page: String var body: some View { @@ -58,6 +59,7 @@ struct MainView: View { .frame(width: geometry.size.width*0.83) .transition(.move(edge: .leading)) } + } .gesture(closeDrag) } diff --git a/Sources/AllInApp/AllInApp.xcodeproj/project.pbxproj b/Sources/AllInApp/AllInApp.xcodeproj/project.pbxproj index bde5765..a86ec07 100644 --- a/Sources/AllInApp/AllInApp.xcodeproj/project.pbxproj +++ b/Sources/AllInApp/AllInApp.xcodeproj/project.pbxproj @@ -7,6 +7,9 @@ objects = { /* Begin PBXBuildFile section */ + 123590B42B51792000F7AEBD /* DetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 123590B32B51792000F7AEBD /* DetailsView.swift */; }; + 123590B62B5537E200F7AEBD /* ResultBanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 123590B52B5537E200F7AEBD /* ResultBanner.swift */; }; + 123590B82B5541BA00F7AEBD /* ParticipateButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 123590B72B5541BA00F7AEBD /* ParticipateButton.swift */; }; 1244EF602B4EC31E00374ABF /* HistoricBetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1244EF5F2B4EC31E00374ABF /* HistoricBetView.swift */; }; 1244EF622B4EC67000374ABF /* ReviewCard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1244EF612B4EC67000374ABF /* ReviewCard.swift */; }; EC0193782B25BF16005D81E6 /* AllcoinsCapsule.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC0193772B25BF16005D81E6 /* AllcoinsCapsule.swift */; }; @@ -99,6 +102,9 @@ 122278B72B4BDE1100E632AA /* DependencyInjection.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = DependencyInjection.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 122278B92B4BDE9500E632AA /* Package.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Package.swift; path = ../Model/Package.swift; sourceTree = ""; }; 122278BB2B4BDEC300E632AA /* Sources */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Sources; path = ../StubLib/Sources; sourceTree = ""; }; + 123590B32B51792000F7AEBD /* DetailsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailsView.swift; sourceTree = ""; }; + 123590B52B5537E200F7AEBD /* ResultBanner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResultBanner.swift; sourceTree = ""; }; + 123590B72B5541BA00F7AEBD /* ParticipateButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParticipateButton.swift; sourceTree = ""; }; 1244EF5F2B4EC31E00374ABF /* HistoricBetView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HistoricBetView.swift; sourceTree = ""; }; 1244EF612B4EC67000374ABF /* ReviewCard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReviewCard.swift; sourceTree = ""; }; EC0193772B25BF16005D81E6 /* AllcoinsCapsule.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AllcoinsCapsule.swift; sourceTree = ""; }; @@ -290,6 +296,7 @@ EC650A512B2794DD003AFCAD /* BetView.swift */, EC7A882C2B28D8A1004F226A /* CreationBetView.swift */, 1244EF5F2B4EC31E00374ABF /* HistoricBetView.swift */, + 123590B32B51792000F7AEBD /* DetailsView.swift */, ); path = Views; sourceTree = ""; @@ -316,6 +323,8 @@ ECA9D1C82B2D9ADA0076E0EC /* UserInfo.swift */, ECA9D1CA2B2DA2320076E0EC /* DropDownFriends.swift */, 1244EF612B4EC67000374ABF /* ReviewCard.swift */, + 123590B52B5537E200F7AEBD /* ResultBanner.swift */, + 123590B72B5541BA00F7AEBD /* ParticipateButton.swift */, ); path = Components; sourceTree = ""; @@ -496,6 +505,7 @@ EC30770F2B24FCB00060E34D /* RegisterView.swift in Sources */, EC650A522B2794DD003AFCAD /* BetView.swift in Sources */, EC6B969C2B24B4CC00FC1C58 /* AllInApp.swift in Sources */, + 123590B42B51792000F7AEBD /* DetailsView.swift in Sources */, ECB26A192B40744F00FE06B3 /* RankingViewModel.swift in Sources */, EC650A502B2793D5003AFCAD /* TextCapsule.swift in Sources */, EC650A482B25DCFF003AFCAD /* UsersPreview.swift in Sources */, @@ -518,12 +528,14 @@ EC3077072B24CB840060E34D /* SplashView.swift in Sources */, EC01937E2B25C52E005D81E6 /* TopBar.swift in Sources */, ECA9D1CB2B2DA2320076E0EC /* DropDownFriends.swift in Sources */, + 123590B82B5541BA00F7AEBD /* ParticipateButton.swift in Sources */, ECB26A1B2B40746C00FE06B3 /* FriendsViewModel.swift in Sources */, ECB7BC682B2F1ADF002A6654 /* LoginViewModel.swift in Sources */, 1244EF622B4EC67000374ABF /* ReviewCard.swift in Sources */, EC6B96D52B24BE0E00FC1C58 /* MainView.swift in Sources */, EC650A562B279D68003AFCAD /* WinModal.swift in Sources */, EC6B96D12B24BAE800FC1C58 /* AuthService.swift in Sources */, + 123590B62B5537E200F7AEBD /* ResultBanner.swift in Sources */, EC01937C2B25C2A8005D81E6 /* AllcoinsCounter.swift in Sources */, EC650A542B279545003AFCAD /* ChoiceCapsule.swift in Sources */, ECB7BC6C2B2F43EE002A6654 /* AppState.swift in Sources */,