mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-05-02 06:06:57 +02:00
Updates following PR review.
Fix tests by moving constants out of Coordinator (as it is only part of the Riot target).
This commit is contained in:
+5
-7
@@ -14,19 +14,18 @@
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import UIKit
|
||||
import SwiftUI
|
||||
|
||||
struct OnboardingSplashScreenCoordinatorParameters { }
|
||||
protocol OnboardingSplashScreenCoordinatorProtocol: Coordinator, Presentable {
|
||||
var completion: ((OnboardingSplashScreenViewModelResult) -> Void)? { get set }
|
||||
}
|
||||
|
||||
final class OnboardingSplashScreenCoordinator: Coordinator, Presentable {
|
||||
final class OnboardingSplashScreenCoordinator: OnboardingSplashScreenCoordinatorProtocol {
|
||||
|
||||
// MARK: - Properties
|
||||
|
||||
// MARK: Private
|
||||
|
||||
private let parameters: OnboardingSplashScreenCoordinatorParameters
|
||||
private let onboardingSplashScreenHostingController: UIViewController
|
||||
private var onboardingSplashScreenViewModel: OnboardingSplashScreenViewModelProtocol
|
||||
|
||||
@@ -39,8 +38,7 @@ final class OnboardingSplashScreenCoordinator: Coordinator, Presentable {
|
||||
// MARK: - Setup
|
||||
|
||||
@available(iOS 14.0, *)
|
||||
init(parameters: OnboardingSplashScreenCoordinatorParameters) {
|
||||
self.parameters = parameters
|
||||
init() {
|
||||
let viewModel = OnboardingSplashScreenViewModel()
|
||||
let view = OnboardingSplashScreen(viewModel: viewModel.context)
|
||||
onboardingSplashScreenViewModel = viewModel
|
||||
|
||||
@@ -43,6 +43,21 @@ enum OnboardingSplashScreenViewModelResult {
|
||||
|
||||
@available(iOS 13.0, *)
|
||||
struct OnboardingSplashScreenViewState: BindableState, CustomDebugStringConvertible {
|
||||
|
||||
// MARK: - Constants
|
||||
|
||||
private enum Constants {
|
||||
static let gradientColors = [
|
||||
Color(red: 0.95, green: 0.98, blue: 0.96),
|
||||
Color(red: 0.89, green: 0.96, blue: 0.97),
|
||||
Color(red: 0.95, green: 0.89, blue: 0.97),
|
||||
Color(red: 0.81, green: 0.95, blue: 0.91),
|
||||
Color(red: 0.95, green: 0.98, blue: 0.96)
|
||||
]
|
||||
}
|
||||
|
||||
// MARK: - Properties
|
||||
|
||||
/// An array containing all content of the carousel pages
|
||||
let content: [OnboardingSplashScreenPageContent]
|
||||
var bindings: OnboardingSplashScreenBindings
|
||||
@@ -62,34 +77,22 @@ struct OnboardingSplashScreenViewState: BindableState, CustomDebugStringConverti
|
||||
message: VectorL10n.onboardingSplashPage1Message,
|
||||
image: Asset.Images.onboardingSplashScreenPage1,
|
||||
darkImage: Asset.Images.onboardingSplashScreenPage1Dark,
|
||||
gradient: Gradient(colors: [
|
||||
Color(red: 0.95, green: 0.98, blue: 0.96),
|
||||
Color(red: 0.89, green: 0.96, blue: 0.97)
|
||||
])),
|
||||
gradient: Gradient(colors: [Constants.gradientColors[0], Constants.gradientColors[1]])),
|
||||
OnboardingSplashScreenPageContent(title: VectorL10n.onboardingSplashPage2Title,
|
||||
message: VectorL10n.onboardingSplashPage2Message,
|
||||
image: Asset.Images.onboardingSplashScreenPage2,
|
||||
darkImage: Asset.Images.onboardingSplashScreenPage2Dark,
|
||||
gradient: Gradient(colors: [
|
||||
Color(red: 0.89, green: 0.96, blue: 0.97),
|
||||
Color(red: 0.95, green: 0.89, blue: 0.97)
|
||||
])),
|
||||
gradient: Gradient(colors: [Constants.gradientColors[1], Constants.gradientColors[2]])),
|
||||
OnboardingSplashScreenPageContent(title: VectorL10n.onboardingSplashPage3Title,
|
||||
message: VectorL10n.onboardingSplashPage3Message,
|
||||
image: Asset.Images.onboardingSplashScreenPage3,
|
||||
darkImage: Asset.Images.onboardingSplashScreenPage3Dark,
|
||||
gradient: Gradient(colors: [
|
||||
Color(red: 0.95, green: 0.89, blue: 0.97),
|
||||
Color(red: 0.81, green: 0.95, blue: 0.91)
|
||||
])),
|
||||
gradient: Gradient(colors: [Constants.gradientColors[2], Constants.gradientColors[3]])),
|
||||
OnboardingSplashScreenPageContent(title: page4Title,
|
||||
message: VectorL10n.onboardingSplashPage4Message,
|
||||
image: Asset.Images.onboardingSplashScreenPage4,
|
||||
darkImage: Asset.Images.onboardingSplashScreenPage4Dark,
|
||||
gradient: Gradient(colors: [
|
||||
Color(red: 0.81, green: 0.95, blue: 0.91),
|
||||
Color(red: 0.95, green: 0.98, blue: 0.96)
|
||||
])),
|
||||
gradient: Gradient(colors: [Constants.gradientColors[3], Constants.gradientColors[4]])),
|
||||
]
|
||||
self.bindings = OnboardingSplashScreenBindings()
|
||||
}
|
||||
|
||||
@@ -70,7 +70,7 @@ struct OnboardingSplashScreen: View {
|
||||
|
||||
buttons
|
||||
.padding(.horizontal, 16)
|
||||
.frame(maxWidth: OnboardingCoordinator.maxContentWidth)
|
||||
.frame(maxWidth: OnboardingConstants.maxContentWidth)
|
||||
Spacer()
|
||||
}
|
||||
.background(ViewFrameReader(frame: $overlayFrame))
|
||||
@@ -195,6 +195,5 @@ struct OnboardingSplashScreen_Previews: PreviewProvider {
|
||||
static let stateRenderer = MockOnboardingSplashScreenScreenState.stateRenderer
|
||||
static var previews: some View {
|
||||
stateRenderer.screenGroup()
|
||||
// .environment(\.layoutDirection, .rightToLeft)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,15 +30,11 @@ struct OnboardingSplashScreenPage: View {
|
||||
/// The height of the non-scrollable content in the splash screen.
|
||||
let overlayHeight: CGFloat
|
||||
|
||||
var isDarkModeEnabled: Bool {
|
||||
theme.identifier != .light
|
||||
}
|
||||
|
||||
// MARK: - Views
|
||||
|
||||
@ViewBuilder
|
||||
var backgroundGradient: some View {
|
||||
if !isDarkModeEnabled {
|
||||
if !theme.isDark {
|
||||
LinearGradient(gradient: content.gradient, startPoint: .leading, endPoint: .trailing)
|
||||
.flipsForRightToLeftLayoutDirection(true)
|
||||
}
|
||||
@@ -47,7 +43,7 @@ struct OnboardingSplashScreenPage: View {
|
||||
var body: some View {
|
||||
VStack {
|
||||
VStack {
|
||||
Image(isDarkModeEnabled ? content.darkImage.name : content.image.name)
|
||||
Image(theme.isDark ? content.darkImage.name : content.image.name)
|
||||
.resizable()
|
||||
.scaledToFit()
|
||||
.frame(maxWidth: 300)
|
||||
@@ -70,8 +66,8 @@ struct OnboardingSplashScreenPage: View {
|
||||
Spacer().frame(maxHeight: overlayHeight)
|
||||
}
|
||||
.padding(.horizontal, 16)
|
||||
.frame(maxWidth: OnboardingCoordinator.maxContentWidth,
|
||||
maxHeight: OnboardingCoordinator.maxContentHeight)
|
||||
.frame(maxWidth: OnboardingConstants.maxContentWidth,
|
||||
maxHeight: OnboardingConstants.maxContentHeight)
|
||||
}
|
||||
.frame(maxWidth: .infinity, maxHeight: .infinity)
|
||||
.background(backgroundGradient.ignoresSafeArea())
|
||||
|
||||
Reference in New Issue
Block a user