Fix accent colour not being applied to Alerts etc. (#701)

This commit is contained in:
Doug
2023-03-14 13:38:36 +00:00
committed by GitHub
parent 8a069ecfa5
commit 1a81768c62
21 changed files with 20 additions and 50 deletions
@@ -22,6 +22,10 @@ struct Application: App {
private let applicationCoordinator: AppCoordinatorProtocol private let applicationCoordinator: AppCoordinatorProtocol
init() { init() {
// Set the tint colour app-wide. Using UIView ensures that alerts, confirmation dialogs
// and Xcode previews all take on the tint colour, similar to defining it in an asset catalog.
UIView.appearance().tintColor = .element.accent
if Tests.isRunningUITests { if Tests.isRunningUITests {
applicationCoordinator = UITestsAppCoordinator() applicationCoordinator = UITestsAppCoordinator()
} else { } else {
@@ -35,7 +39,6 @@ struct Application: App {
EmptyView() EmptyView()
} else { } else {
applicationCoordinator.toPresentable() applicationCoordinator.toPresentable()
.accentColor(.element.accent)
.task { .task {
applicationCoordinator.start() applicationCoordinator.start()
} }
@@ -371,11 +371,9 @@ private struct NavigationSplitCoordinatorView: View {
// through the NavigationSplitCoordinator as well. // through the NavigationSplitCoordinator as well.
.sheet(item: $navigationSplitCoordinator.sheetModule) { module in .sheet(item: $navigationSplitCoordinator.sheetModule) { module in
module.coordinator?.toPresentable() module.coordinator?.toPresentable()
.tint(.element.accent)
} }
.fullScreenCover(item: $navigationSplitCoordinator.fullScreenCoverModule) { module in .fullScreenCover(item: $navigationSplitCoordinator.fullScreenCoverModule) { module in
module.coordinator?.toPresentable() module.coordinator?.toPresentable()
.tint(.element.accent)
} }
} }
@@ -666,11 +664,9 @@ private struct NavigationStackCoordinatorView: View {
} }
.sheet(item: $navigationStackCoordinator.sheetModule) { module in .sheet(item: $navigationStackCoordinator.sheetModule) { module in
module.coordinator?.toPresentable() module.coordinator?.toPresentable()
.tint(.element.accent)
} }
.fullScreenCover(item: $navigationStackCoordinator.fullScreenCoverModule) { module in .fullScreenCover(item: $navigationStackCoordinator.fullScreenCoverModule) { module in
module.coordinator?.toPresentable() module.coordinator?.toPresentable()
.tint(.element.accent)
} }
} }
} }
@@ -69,6 +69,7 @@ struct AnalyticsPrompt: View {
.font(.element.body) .font(.element.body)
.multilineTextAlignment(.center) .multilineTextAlignment(.center)
.foregroundColor(.element.secondaryContent) .foregroundColor(.element.secondaryContent)
.tint(.element.links)
Divider() Divider()
.background(Color.element.quinaryContent) .background(Color.element.quinaryContent)
@@ -115,6 +116,5 @@ struct AnalyticsPrompt_Previews: PreviewProvider {
static let viewModel = AnalyticsPromptViewModel(termsURL: ServiceLocator.shared.settings.analyticsConfiguration.termsURL) static let viewModel = AnalyticsPromptViewModel(termsURL: ServiceLocator.shared.settings.analyticsConfiguration.termsURL)
static var previews: some View { static var previews: some View {
AnalyticsPrompt(context: viewModel.context) AnalyticsPrompt(context: viewModel.context)
.tint(.element.accent)
} }
} }
@@ -165,7 +165,6 @@ struct Login_Previews: PreviewProvider {
NavigationStack { NavigationStack {
LoginScreen(context: viewModel.context) LoginScreen(context: viewModel.context)
.navigationBarTitleDisplayMode(.inline) .navigationBarTitleDisplayMode(.inline)
.tint(.element.accent)
.toolbar { .toolbar {
ToolbarItem(placement: .cancellationAction) { ToolbarItem(placement: .cancellationAction) {
Button { } label: { Button { } label: {
@@ -174,6 +173,5 @@ struct Login_Previews: PreviewProvider {
} }
} }
} }
.tint(.element.accent)
} }
} }
@@ -106,7 +106,6 @@ struct ServerSelection_Previews: PreviewProvider {
ForEach(MockServerSelectionScreenState.allCases, id: \.self) { state in ForEach(MockServerSelectionScreenState.allCases, id: \.self) { state in
NavigationStack { NavigationStack {
ServerSelectionScreen(context: state.viewModel.context) ServerSelectionScreen(context: state.viewModel.context)
.tint(.element.accent)
} }
} }
} }
@@ -182,7 +182,6 @@ struct SoftLogout_Previews: PreviewProvider {
NavigationStack { NavigationStack {
SoftLogoutScreen(context: viewModel.context) SoftLogoutScreen(context: viewModel.context)
.navigationBarTitleDisplayMode(.inline) .navigationBarTitleDisplayMode(.inline)
.tint(.element.accent)
.toolbar { .toolbar {
ToolbarItem(placement: .cancellationAction) { ToolbarItem(placement: .cancellationAction) {
Button { } label: { Button { } label: {
@@ -191,6 +190,5 @@ struct SoftLogout_Previews: PreviewProvider {
} }
} }
} }
.tint(.element.accent)
} }
} }
@@ -26,6 +26,8 @@ struct DeveloperOptionsScreenScreen: View {
Toggle(isOn: $context.shouldCollapseRoomStateEvents) { Toggle(isOn: $context.shouldCollapseRoomStateEvents) {
Text("Collapse room state events") Text("Collapse room state events")
} }
.tint(.element.brand)
.labelStyle(FormRowLabelStyle())
.onChange(of: context.shouldCollapseRoomStateEvents) { _ in .onChange(of: context.shouldCollapseRoomStateEvents) { _ in
context.send(viewAction: .changedShouldCollapseRoomStateEvents) context.send(viewAction: .changedShouldCollapseRoomStateEvents)
} }
@@ -77,6 +79,5 @@ struct DeveloperOptionsScreen_Previews: PreviewProvider {
static var previews: some View { static var previews: some View {
let viewModel = DeveloperOptionsScreenViewModel() let viewModel = DeveloperOptionsScreenViewModel()
DeveloperOptionsScreenScreen(context: viewModel.context) DeveloperOptionsScreenScreen(context: viewModel.context)
.tint(.element.accent)
} }
} }
@@ -67,6 +67,5 @@ struct EmojiPickerScreen_Previews: PreviewProvider {
NavigationStack { NavigationStack {
EmojiPickerScreen(context: EmojiPickerScreenViewModel(emojiProvider: EmojiProvider()).context) EmojiPickerScreen(context: EmojiPickerScreenViewModel(emojiProvider: EmojiProvider()).context)
} }
.tint(.element.accent)
} }
} }
@@ -98,6 +98,5 @@ struct FilePreview_Previews: PreviewProvider {
let upgradeViewModel = FilePreviewViewModel(fileURL: URL(staticString: "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf")) let upgradeViewModel = FilePreviewViewModel(fileURL: URL(staticString: "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"))
FilePreviewScreen(context: upgradeViewModel.context) FilePreviewScreen(context: upgradeViewModel.context)
} }
.tint(.element.accent)
} }
} }
@@ -240,9 +240,7 @@ struct HomeScreen: View {
struct HomeScreen_Previews: PreviewProvider { struct HomeScreen_Previews: PreviewProvider {
static var previews: some View { static var previews: some View {
body(.loading) body(.loading)
.tint(.element.accent)
body(.loaded) body(.loaded)
.tint(.element.accent)
} }
static func body(_ state: MockRoomSummaryProviderState) -> some View { static func body(_ state: MockRoomSummaryProviderState) -> some View {
@@ -161,10 +161,6 @@ private extension View {
struct HomeScreenRoomCell_Previews: PreviewProvider { struct HomeScreenRoomCell_Previews: PreviewProvider {
static var previews: some View { static var previews: some View {
body.tint(.element.accent)
}
static var body: some View {
let summaryProvider = MockRoomSummaryProvider(state: .loaded) let summaryProvider = MockRoomSummaryProvider(state: .loaded)
let userSession = MockUserSession(clientProxy: MockClientProxy(userID: "John Doe", roomSummaryProvider: summaryProvider), let userSession = MockUserSession(clientProxy: MockClientProxy(userID: "John Doe", roomSummaryProvider: summaryProvider),
@@ -205,6 +205,5 @@ struct OnboardingScreen_Previews: PreviewProvider {
static var previews: some View { static var previews: some View {
OnboardingScreen(context: viewModel.context) OnboardingScreen(context: viewModel.context)
.tint(.element.accent)
} }
} }
@@ -171,6 +171,5 @@ struct RoomDetails_Previews: PreviewProvider {
static var previews: some View { static var previews: some View {
RoomDetailsScreen(context: viewModel.context) RoomDetailsScreen(context: viewModel.context)
.tint(.element.accent)
} }
} }
@@ -48,13 +48,6 @@ struct RoomMemberDetailsMemberCell: View {
struct RoomMemberDetailsMemberCell_Previews: PreviewProvider { struct RoomMemberDetailsMemberCell_Previews: PreviewProvider {
static var previews: some View { static var previews: some View {
body.preferredColorScheme(.light)
.tint(.element.accent)
body.preferredColorScheme(.dark)
.tint(.element.accent)
}
static var body: some View {
let members: [RoomMemberProxy] = [ let members: [RoomMemberProxy] = [
.mockAlice, .mockAlice,
.mockBob, .mockBob,
@@ -59,6 +59,5 @@ struct RoomMemberDetails_Previews: PreviewProvider {
members: members) members: members)
RoomMemberDetailsScreen(context: viewModel.context) RoomMemberDetailsScreen(context: viewModel.context)
} }
.tint(.element.accent)
} }
} }
@@ -217,7 +217,6 @@ struct MessageComposer_Previews: PreviewProvider {
replyCancellationAction: { }, replyCancellationAction: { },
editCancellationAction: { }) editCancellationAction: { })
} }
.tint(.element.accent)
.padding(.horizontal) .padding(.horizontal)
} }
} }
@@ -51,7 +51,6 @@ struct TimelineItemDebugView: View {
} }
} }
} }
.tint(.element.accent)
} }
} }
@@ -226,15 +226,12 @@ struct SessionVerificationScreen: View {
struct SessionVerification_Previews: PreviewProvider { struct SessionVerification_Previews: PreviewProvider {
static var previews: some View { static var previews: some View {
Group { sessionVerificationScreen(state: .initial)
sessionVerificationScreen(state: .initial) sessionVerificationScreen(state: .requestingVerification)
sessionVerificationScreen(state: .requestingVerification) sessionVerificationScreen(state: .cancelled)
sessionVerificationScreen(state: .cancelled)
sessionVerificationScreen(state: .showingChallenge(emojis: SessionVerificationControllerProxyMock.emojis))
sessionVerificationScreen(state: .showingChallenge(emojis: SessionVerificationControllerProxyMock.emojis)) sessionVerificationScreen(state: .verified)
sessionVerificationScreen(state: .verified)
}
.tint(Color.element.accent)
} }
static func sessionVerificationScreen(state: SessionVerificationStateMachine.State) -> some View { static func sessionVerificationScreen(state: SessionVerificationStateMachine.State) -> some View {
@@ -192,7 +192,6 @@ struct SettingsScreen_Previews: PreviewProvider {
static var previews: some View { static var previews: some View {
NavigationStack { NavigationStack {
SettingsScreen(context: viewModel.context) SettingsScreen(context: viewModel.context)
.tint(.element.accent)
} }
} }
} }
@@ -93,14 +93,12 @@ struct TemplateScreen: View {
// MARK: - Previews // MARK: - Previews
struct Template_Previews: PreviewProvider { struct Template_Previews: PreviewProvider {
static let regularViewModel = TemplateViewModel(promptType: .regular)
static let upgradeViewModel = TemplateViewModel(promptType: .upgrade)
static var previews: some View { static var previews: some View {
Group { TemplateScreen(context: regularViewModel.context)
let regularViewModel = TemplateViewModel(promptType: .regular) .previewDisplayName("Regular")
TemplateScreen(context: regularViewModel.context) TemplateScreen(context: upgradeViewModel.context)
.previewDisplayName("Upgrade")
let upgradeViewModel = TemplateViewModel(promptType: .upgrade)
TemplateScreen(context: upgradeViewModel.context)
}
.tint(.element.accent)
} }
} }
+1
View File
@@ -0,0 +1 @@
Fix accent colour not being applied to Alerts etc.