mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-30 13:16:58 +02:00
Feature/3811 appconfig
This commit is contained in:
@@ -36,6 +36,11 @@ fileprivate struct Page: View {
|
||||
|
||||
@State var buttonCallback: (() -> Void)?
|
||||
|
||||
private let service = ServerDowntimeDefaultService()
|
||||
@State private var isFetchingDowntime = false
|
||||
@State private var showAlert = false
|
||||
@State private var activeAlert: ServerMaintenanceAlertType = .showInvalidAppVersionAlert
|
||||
|
||||
var body: some View {
|
||||
GeometryReader { geometry in
|
||||
VStack(alignment: .center, spacing: 40) {
|
||||
@@ -54,8 +59,9 @@ fileprivate struct Page: View {
|
||||
.multilineTextAlignment(.center)
|
||||
Spacer()
|
||||
|
||||
// bwi #3811: check for maintenance when the server selection is skipped
|
||||
if let doneButton = doneButton, let buttonCallback = buttonCallback {
|
||||
Button(action: buttonCallback) {
|
||||
Button(action: startButtonAction) {
|
||||
Text(doneButton)
|
||||
.foregroundColor(.white)
|
||||
.padding(.vertical, 10)
|
||||
@@ -64,6 +70,11 @@ fileprivate struct Page: View {
|
||||
.clipShape(RoundedRectangle(cornerRadius: 10))
|
||||
}
|
||||
.padding(.bottom, 100)
|
||||
.alert(isPresented: $showAlert, content: {
|
||||
service.alert(alertType: activeAlert) {
|
||||
buttonCallback()
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
.padding(.top, 100)
|
||||
@@ -71,6 +82,49 @@ fileprivate struct Page: View {
|
||||
.frame(maxWidth: .infinity, maxHeight: .infinity)
|
||||
}
|
||||
}
|
||||
|
||||
private func startButtonAction() {
|
||||
guard let buttonCallback = buttonCallback else {
|
||||
return
|
||||
}
|
||||
|
||||
if BWIBuildSettings.shared.enableMaintenanceInfoOnLogin && BWIBuildSettings.shared.avoidServerSelectionOnAppConfig && AppConfigService.shared.isAppConfig {
|
||||
isFetchingDowntime = true // show progresview
|
||||
|
||||
if BWIBuildSettings.shared.useTestDataForDowntime {
|
||||
service.fetchDowntimes {
|
||||
self.isFetchingDowntime = false // hide progressview
|
||||
self.showAlertIfNeeded()
|
||||
}
|
||||
} else {
|
||||
service.fetchDowntimesWithDirectRequest { success in
|
||||
DispatchQueue.main.async {
|
||||
self.isFetchingDowntime = false // hide progressview
|
||||
if success {
|
||||
self.showAlertIfNeeded()
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
buttonCallback()
|
||||
}
|
||||
}
|
||||
|
||||
private func showAlertIfNeeded() {
|
||||
guard let buttonCallback = buttonCallback else {
|
||||
return
|
||||
}
|
||||
|
||||
if service.showAlert() {
|
||||
activeAlert = service.alertType()
|
||||
showAlert = true
|
||||
} else {
|
||||
buttonCallback()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct WelcomeExperienceView_Previews: PreviewProvider {
|
||||
|
||||
Reference in New Issue
Block a user