Properly use the new hideBrandChrome in the AuthenticationStartLogo
This commit is contained in:
committed by
Stefan Ceriu
parent
137d02242a
commit
063d0e4f52
@@ -111,7 +111,8 @@ class AppCoordinator: AppCoordinatorProtocol, AuthenticationFlowCoordinatorDeleg
|
||||
let appLockService = AppLockService(keychainController: keychainController, appSettings: appSettings)
|
||||
let appLockNavigationCoordinator = NavigationRootCoordinator()
|
||||
appLockFlowCoordinator = AppLockFlowCoordinator(appLockService: appLockService,
|
||||
navigationCoordinator: appLockNavigationCoordinator)
|
||||
navigationCoordinator: appLockNavigationCoordinator,
|
||||
appSettings: appSettings)
|
||||
|
||||
notificationManager = NotificationManager(notificationCenter: UNUserNotificationCenter.current(),
|
||||
appSettings: appSettings)
|
||||
@@ -911,7 +912,7 @@ class AppCoordinator: AppCoordinatorProtocol, AuthenticationFlowCoordinatorDeleg
|
||||
|
||||
showLoadingIndicator()
|
||||
|
||||
navigationRootCoordinator.setRootCoordinator(PlaceholderScreenCoordinator())
|
||||
navigationRootCoordinator.setRootCoordinator(PlaceholderScreenCoordinator(hideBrandChrome: appSettings.hideBrandChrome))
|
||||
|
||||
stopSync(isBackgroundTask: false)
|
||||
userSessionFlowCoordinator?.stop()
|
||||
|
||||
@@ -22,6 +22,7 @@ enum AppLockFlowCoordinatorAction: Equatable {
|
||||
class AppLockFlowCoordinator: CoordinatorProtocol {
|
||||
let appLockService: AppLockServiceProtocol
|
||||
let navigationCoordinator: NavigationRootCoordinator
|
||||
let appSettings: AppSettings
|
||||
|
||||
/// States the flow can find itself in
|
||||
enum State: StateType {
|
||||
@@ -89,9 +90,11 @@ class AppLockFlowCoordinator: CoordinatorProtocol {
|
||||
init(initialState: State = .initial,
|
||||
appLockService: AppLockServiceProtocol,
|
||||
navigationCoordinator: NavigationRootCoordinator,
|
||||
notificationCenter: NotificationCenter = .default) {
|
||||
notificationCenter: NotificationCenter = .default,
|
||||
appSettings: AppSettings) {
|
||||
self.appLockService = appLockService
|
||||
self.navigationCoordinator = navigationCoordinator
|
||||
self.appSettings = appSettings
|
||||
|
||||
// Set the initial state and start with the placeholder screen as the root view.
|
||||
stateMachine = .init(state: initialState)
|
||||
@@ -218,7 +221,7 @@ class AppLockFlowCoordinator: CoordinatorProtocol {
|
||||
|
||||
/// Displays the unlock flow with the app's placeholder view to hide obscure the view hierarchy in the app switcher.
|
||||
private func showPlaceholder() {
|
||||
navigationCoordinator.setRootCoordinator(PlaceholderScreenCoordinator(hideBrandChrome: false), animated: false)
|
||||
navigationCoordinator.setRootCoordinator(PlaceholderScreenCoordinator(hideBrandChrome: appSettings.hideBrandChrome), animated: false)
|
||||
actionsSubject.send(.lockApp)
|
||||
}
|
||||
|
||||
|
||||
@@ -77,7 +77,7 @@ class UserSessionFlowCoordinator: FlowCoordinatorProtocol {
|
||||
navigationTabCoordinator = NavigationTabCoordinator()
|
||||
navigationRootCoordinator.setRootCoordinator(navigationTabCoordinator)
|
||||
|
||||
let chatsSplitCoordinator = NavigationSplitCoordinator(placeholderCoordinator: PlaceholderScreenCoordinator())
|
||||
let chatsSplitCoordinator = NavigationSplitCoordinator(placeholderCoordinator: PlaceholderScreenCoordinator(hideBrandChrome: flowParameters.appSettings.hideBrandChrome))
|
||||
chatsFlowCoordinator = ChatsFlowCoordinator(isNewLogin: isNewLogin,
|
||||
navigationSplitCoordinator: chatsSplitCoordinator,
|
||||
flowParameters: flowParameters)
|
||||
@@ -88,7 +88,7 @@ class UserSessionFlowCoordinator: FlowCoordinatorProtocol {
|
||||
chatsTabDetails.barVisibilityOverride = .hidden
|
||||
}
|
||||
|
||||
let spacesSplitCoordinator = NavigationSplitCoordinator(placeholderCoordinator: PlaceholderScreenCoordinator())
|
||||
let spacesSplitCoordinator = NavigationSplitCoordinator(placeholderCoordinator: PlaceholderScreenCoordinator(hideBrandChrome: flowParameters.appSettings.hideBrandChrome))
|
||||
spaceExplorerFlowCoordinator = SpaceExplorerFlowCoordinator(navigationSplitCoordinator: spacesSplitCoordinator,
|
||||
flowParameters: flowParameters)
|
||||
spacesTabDetails = .init(tag: HomeTab.spaces, title: L10n.screenHomeTabSpaces, icon: \.space, selectedIcon: \.spaceSolid)
|
||||
|
||||
@@ -12,7 +12,7 @@ struct AuthenticationStartLogo: View {
|
||||
@Environment(\.colorScheme) private var colorScheme
|
||||
|
||||
/// Set to `true` when using on top of `Asset.Images.launchBackground`
|
||||
let isOnGradient: Bool
|
||||
let hideBrandChrome: Bool
|
||||
|
||||
/// Extra padding needed to avoid cropping the shadows.
|
||||
private let extra: CGFloat = 64
|
||||
@@ -22,11 +22,19 @@ struct AuthenticationStartLogo: View {
|
||||
private var isLight: Bool { colorScheme == .light }
|
||||
|
||||
var body: some View {
|
||||
if hideBrandChrome {
|
||||
Image(asset: Asset.Images.appLogo)
|
||||
} else {
|
||||
brandLogo
|
||||
}
|
||||
}
|
||||
|
||||
private var brandLogo: some View {
|
||||
Image(asset: Asset.Images.appLogo)
|
||||
.background {
|
||||
Circle()
|
||||
.inset(by: 1)
|
||||
.shadow(color: .black.opacity(!isLight && isOnGradient ? 0.3 : 0.4),
|
||||
.shadow(color: .black.opacity(!isLight ? 0.3 : 0.4),
|
||||
radius: 12.57143,
|
||||
y: 6.28571)
|
||||
|
||||
@@ -40,19 +48,19 @@ struct AuthenticationStartLogo: View {
|
||||
.padding(24)
|
||||
.background {
|
||||
Color.white
|
||||
.opacity(isLight ? 0.23 : isOnGradient ? 0.05 : 0.13)
|
||||
.opacity(isLight ? 0.23 : 0.05)
|
||||
}
|
||||
.clipShape(outerShape)
|
||||
.overlay {
|
||||
outerShape
|
||||
.inset(by: 0.25)
|
||||
.stroke(.white.opacity(isLight ? 1 : isOnGradient ? 0.9 : 0.25), lineWidth: 0.5)
|
||||
.stroke(.white.opacity(isLight ? 1 : 0.9), lineWidth: 0.5)
|
||||
.blendMode(isLight ? .normal : .overlay)
|
||||
}
|
||||
.padding(extra)
|
||||
.background {
|
||||
ZStack {
|
||||
if !isLight, isOnGradient {
|
||||
if !isLight {
|
||||
outerShape
|
||||
.inset(by: 1)
|
||||
.padding(extra)
|
||||
|
||||
@@ -62,7 +62,7 @@ struct AuthenticationStartScreen: View {
|
||||
if verticalSizeClass == .regular {
|
||||
Spacer()
|
||||
|
||||
AuthenticationStartLogo(isOnGradient: !context.viewState.hideBrandChrome)
|
||||
AuthenticationStartLogo(hideBrandChrome: context.viewState.hideBrandChrome)
|
||||
}
|
||||
|
||||
Spacer()
|
||||
|
||||
@@ -10,7 +10,7 @@ import SwiftUI
|
||||
class PlaceholderScreenCoordinator: CoordinatorProtocol {
|
||||
private let hideBrandChrome: Bool
|
||||
|
||||
init(hideBrandChrome: Bool = true) {
|
||||
init(hideBrandChrome: Bool) {
|
||||
self.hideBrandChrome = hideBrandChrome
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ struct PlaceholderScreen: View {
|
||||
let hideBrandChrome: Bool
|
||||
|
||||
var body: some View {
|
||||
AuthenticationStartLogo(isOnGradient: !hideBrandChrome)
|
||||
AuthenticationStartLogo(hideBrandChrome: hideBrandChrome)
|
||||
.frame(maxWidth: .infinity, maxHeight: .infinity)
|
||||
.background {
|
||||
if !hideBrandChrome {
|
||||
@@ -40,11 +40,11 @@ struct PlaceholderScreen: View {
|
||||
|
||||
struct PlaceholderScreen_Previews: PreviewProvider, TestablePreview {
|
||||
static var previews: some View {
|
||||
PlaceholderScreen(hideBrandChrome: true)
|
||||
.previewDisplayName("Screen")
|
||||
|
||||
PlaceholderScreen(hideBrandChrome: false)
|
||||
.previewDisplayName("With background")
|
||||
.previewDisplayName("With chrome")
|
||||
|
||||
PlaceholderScreen(hideBrandChrome: true)
|
||||
.previewDisplayName("Without chrome")
|
||||
|
||||
NavigationSplitView {
|
||||
List {
|
||||
@@ -53,7 +53,7 @@ struct PlaceholderScreen_Previews: PreviewProvider, TestablePreview {
|
||||
}
|
||||
}
|
||||
} detail: {
|
||||
PlaceholderScreen(hideBrandChrome: true)
|
||||
PlaceholderScreen(hideBrandChrome: false)
|
||||
}
|
||||
.previewDisplayName("Split View")
|
||||
.previewInterfaceOrientation(.landscapeLeft)
|
||||
|
||||
@@ -198,7 +198,8 @@ class MockScreen: Identifiable {
|
||||
let flowCoordinator = AppLockFlowCoordinator(initialState: .unlocked,
|
||||
appLockService: appLockService,
|
||||
navigationCoordinator: navigationCoordinator,
|
||||
notificationCenter: notificationCenter)
|
||||
notificationCenter: notificationCenter,
|
||||
appSettings: ServiceLocator.shared.settings)
|
||||
|
||||
flowCoordinator.actions
|
||||
.sink { [weak self] action in
|
||||
@@ -751,7 +752,7 @@ class MockScreen: Identifiable {
|
||||
appSettings.hasRunIdentityConfirmationOnboarding = true
|
||||
appSettings.hasRunNotificationPermissionsOnboarding = true
|
||||
appSettings.analyticsConsentState = .optedOut
|
||||
let navigationSplitCoordinator = NavigationSplitCoordinator(placeholderCoordinator: PlaceholderScreenCoordinator())
|
||||
let navigationSplitCoordinator = NavigationSplitCoordinator(placeholderCoordinator: PlaceholderScreenCoordinator(hideBrandChrome: false))
|
||||
navigationRootCoordinator.setRootCoordinator(navigationSplitCoordinator)
|
||||
|
||||
let clientProxy = ClientProxyMock(.init(userID: "@mock:client.com", roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded(.mockRooms)))))
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -29,7 +29,7 @@ class ChatsFlowCoordinatorTests: XCTestCase {
|
||||
clientProxy = ClientProxyMock(.init(userID: "hi@bob", roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded(.mockRooms)))))
|
||||
timelineControllerFactory = TimelineControllerFactoryMock(.init())
|
||||
|
||||
splitCoordinator = NavigationSplitCoordinator(placeholderCoordinator: PlaceholderScreenCoordinator())
|
||||
splitCoordinator = NavigationSplitCoordinator(placeholderCoordinator: PlaceholderScreenCoordinator(hideBrandChrome: false))
|
||||
|
||||
notificationManager = NotificationManagerMock()
|
||||
|
||||
|
||||
@@ -347,7 +347,7 @@ class RoomFlowCoordinatorTests: XCTestCase {
|
||||
}
|
||||
}
|
||||
|
||||
let navigationSplitCoordinator = NavigationSplitCoordinator(placeholderCoordinator: PlaceholderScreenCoordinator())
|
||||
let navigationSplitCoordinator = NavigationSplitCoordinator(placeholderCoordinator: PlaceholderScreenCoordinator(hideBrandChrome: false))
|
||||
navigationStackCoordinator = NavigationStackCoordinator()
|
||||
navigationSplitCoordinator.setDetailCoordinator(navigationStackCoordinator)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user