@ -17,9 +17,10 @@ struct PadelClubApp: App {
@ StateObject var dataStore = DataStore . shared
@ State private var registrationError : RegistrationError ? = nil
@ State private var importObserverViewModel = ImportObserver ( )
@ State private var showDisconnectionAlert : Bool = false
@ Environment ( \ . horizontalSizeClass ) var horizontalSizeClass
@ State var blockApp = false
@ State var requiredVersion : String ? = nil
@ UIApplicationDelegateAdaptor ( AppDelegate . self ) var appDelegate
@ -65,8 +66,8 @@ struct PadelClubApp: App {
var body : some Scene {
WindowGroup {
if self . blockApp {
DownloadNewVersionView ( )
if let requiredVersion {
DownloadNewVersionView ( version : requiredVersion )
} else {
MainView ( )
. environment ( \ . horizontalSizeClass , . compact )
@ -91,6 +92,10 @@ struct PadelClubApp: App {
. accentColor ( . master )
. onAppear {
self . _checkVersion ( )
if ManualPatcher . patchIfPossible ( . disconnect ) = = true {
self . showDisconnectionAlert = true
}
#if DEBUG
print ( " Running in Debug mode " )
#elseif TESTFLIGHT
@ -104,6 +109,9 @@ struct PadelClubApp: App {
self . _onAppear ( )
print ( PersistenceController . getModelVersion ( ) )
}
. alert ( isPresented : self . $ showDisconnectionAlert , content : {
Alert ( title : Text ( " Vous avez été déconnecté. Veuillez vous reconnecter pour récupérer vos données. " ) )
} )
. task {
// t r y ? T i p s . r e s e t D a t a s t o r e ( )
@ -125,7 +133,9 @@ struct PadelClubApp: App {
Logger . log ( " >>> REQUIRED VERSION = \( requiredVersion ) " )
if let currentVersion = Bundle . main . infoDictionary ? [ " CFBundleShortVersionString " ] as ? String {
await MainActor . run {
self . blockApp = VersionComparator . compare ( cleanedRequired , currentVersion ) = = 1
if VersionComparator . compare ( cleanedRequired , currentVersion ) = = 1 {
self . requiredVersion = cleanedRequired
}
}
}
}
@ -211,22 +221,40 @@ struct PadelClubApp: App {
struct DownloadNewVersionView : View {
var version : String
var body : some View {
VStack {
// A n g l e d S t r i p e s B a c k g r o u n d ( )
Spacer ( )
Text ( " Veuillez télécharger la nouvelle version de Padel Club pour continuer à vous servir de l'app ! " )
. padding ( 32.0 )
. background ( . logoYellow )
. clipShape ( . buttonBorder )
VStack ( spacing : 20.0 ) {
Text ( " Veuillez télécharger la nouvelle version de Padel Club pour continuer à vous servir de l'app ! " )
. fontWeight ( . semibold )
. foregroundStyle ( . white )
. padding ( )
. background ( . logoRed )
. clipShape ( . buttonBorder )
// . p a d d i n g ( 3 2 . 0 )
VStack ( alignment : . center , spacing : 0.0
) {
Text ( " Version \( self . version ) " )
. fontWeight ( . bold )
Image ( systemName : " square.and.arrow.down " ) . font ( . title )
} . padding ( ) . background ( . logoYellow )
. clipShape ( . buttonBorder )
} . frame ( maxWidth : . infinity )
. foregroundStyle ( . logoBackground )
. fontWeight ( . medium )
. multilineTextAlignment ( . center )
. padding ( . horizontal , 64.0 )
. padding ( . horizontal , 3 6.0)
Image ( " logo " ) . padding ( . vertical , 50.0 )
Spacer ( )
} . background ( . logoBackground )
}
. background ( . logoBackground )
. onTapGesture {
UIApplication . shared . open ( URLs . appStore . url )
}
@ -235,3 +263,12 @@ struct DownloadNewVersionView: View {
}
struct DisconnectionAlertView : View {
var body : some View {
Text ( " Vous avez été déconnecté. Veuillez vous reconnecter pour récupérer vos données. " ) . multilineTextAlignment ( . center ) . padding ( )
}
}
# Preview {
DownloadNewVersionView ( version : " 1.2 " )
}