2021-10-19 21:27:04 +00:00
|
|
|
import Defaults
|
2021-10-17 23:06:00 +00:00
|
|
|
import SwiftUI
|
|
|
|
|
|
|
|
struct WelcomeScreen: View {
|
2021-11-28 14:37:55 +00:00
|
|
|
@Environment(\.presentationMode) private var presentationMode
|
2021-10-17 23:06:00 +00:00
|
|
|
|
|
|
|
@EnvironmentObject<AccountsModel> private var accounts
|
|
|
|
|
2021-10-19 21:27:04 +00:00
|
|
|
@Default(.accounts) private var allAccounts
|
|
|
|
|
2021-10-17 23:06:00 +00:00
|
|
|
var body: some View {
|
2021-11-28 14:37:55 +00:00
|
|
|
let welcomeScreen = VStack {
|
2021-10-17 23:06:00 +00:00
|
|
|
Spacer()
|
|
|
|
|
|
|
|
Text("Welcome")
|
|
|
|
.font(.largeTitle)
|
|
|
|
.padding(.bottom, 10)
|
|
|
|
|
2021-10-19 21:27:04 +00:00
|
|
|
if allAccounts.isEmpty {
|
2021-10-17 23:06:00 +00:00
|
|
|
Text("To start, configure your Instances in Settings")
|
|
|
|
.foregroundColor(.secondary)
|
|
|
|
} else {
|
|
|
|
Text("To start, pick one of your accounts:")
|
|
|
|
.foregroundColor(.secondary)
|
|
|
|
#if os(tvOS)
|
|
|
|
AccountSelectionView(showHeader: false)
|
|
|
|
|
|
|
|
Button {
|
2021-11-28 14:37:55 +00:00
|
|
|
presentationMode.wrappedValue.dismiss()
|
2021-10-17 23:06:00 +00:00
|
|
|
} label: {
|
|
|
|
Text("Start")
|
|
|
|
}
|
2021-10-19 21:27:04 +00:00
|
|
|
.opacity(accounts.current.isNil ? 0 : 1)
|
|
|
|
.disabled(accounts.current.isNil)
|
2021-10-17 23:06:00 +00:00
|
|
|
|
|
|
|
#else
|
|
|
|
AccountsMenuView()
|
2021-10-19 21:27:04 +00:00
|
|
|
.onChange(of: accounts.current) { _ in
|
2021-11-28 14:37:55 +00:00
|
|
|
presentationMode.wrappedValue.dismiss()
|
2021-10-17 23:06:00 +00:00
|
|
|
}
|
|
|
|
#if os(macOS)
|
|
|
|
.frame(maxWidth: 280)
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
Spacer()
|
|
|
|
|
|
|
|
OpenSettingsButton()
|
|
|
|
|
|
|
|
Spacer()
|
|
|
|
}
|
|
|
|
#if os(macOS)
|
2021-11-28 14:37:55 +00:00
|
|
|
.frame(minWidth: 400, minHeight: 400)
|
2021-10-17 23:06:00 +00:00
|
|
|
#endif
|
2021-11-28 14:37:55 +00:00
|
|
|
|
|
|
|
if #available(iOS 15.0, macOS 12.0, tvOS 15.0, *) {
|
|
|
|
welcomeScreen
|
|
|
|
.interactiveDismissDisabled()
|
|
|
|
} else {
|
|
|
|
welcomeScreen
|
|
|
|
}
|
2021-10-17 23:06:00 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
struct WelcomeScreen_Previews: PreviewProvider {
|
|
|
|
static var previews: some View {
|
|
|
|
WelcomeScreen()
|
|
|
|
.injectFixtureEnvironmentObjects()
|
|
|
|
}
|
|
|
|
}
|