Cleanup from comments

This commit is contained in:
David Langley 2021-08-12 16:57:19 +01:00
parent 3dfdb0fa83
commit b792af6594
9 changed files with 28 additions and 14 deletions

View file

@ -29,6 +29,9 @@ extension EnvironmentValues {
}
}
/**
A theme modifier for setting the theme for this view all it's decendants in the hierarchy.
*/
@available(iOS 14.0, *)
extension View {
func theme(_ theme: Theme) -> some View {

View file

@ -35,6 +35,10 @@ enum ThemeIdentifier: String, RawRepresentable {
}
}
/**
A Convenience extension for getting the theme given a specific Id.
E.g. in SwiftUI preview to set a theme via `ThemeIdentifier.dark.theme`
*/
extension ThemeIdentifier {
var theme: Theme {
ThemeService.shared().theme(withThemeId: self.rawValue)

View file

@ -40,14 +40,22 @@ class AvatarService: AvatarServiceType {
static let avatarDownloadSize = AvatarSize.xxLarge.size
}
let avatarGenerator: AvatarGenerator
let mediaManager: MXMediaManager
private let avatarGenerator: AvatarGenerator
private let mediaManager: MXMediaManager
init(avatarGenerator: AvatarGenerator, mediaManager: MXMediaManager) {
self.avatarGenerator = avatarGenerator
self.mediaManager = mediaManager
}
/**
Given an avatar inpute this function returns a publisher of UIImage.
If possible to retrieve the actualy image it will from network or cache.
While waiting ont he netowrk or if one can't be retrieved it will return the generated acatar.
- Parameter inputData: data required to fetch the avatar or generate the image
- Returns: A publisher of UIImage? that doesn't error(always possible to generate the image)
*/
@available(iOS 14.0, *)
func avatarImage(inputData: AvatarInputType) -> AnyPublisher<UIImage?, Never> {

View file

@ -23,11 +23,11 @@ import SwiftUI
@available(iOS 14.0, *)
struct VectorContentModifier: ViewModifier {
@StateObject var themeObservor = ThemeObserver.shared
@StateObject private var themeObserver = ThemeObserver.shared
func body(content: Content) -> some View {
content
.theme(themeObservor.theme)
.theme(themeObserver.theme)
}
}

View file

@ -44,10 +44,11 @@ final class RoomNotificationSettingsCoordinator: RoomNotificationSettingsCoordin
let avatarData: AvatarInputOption?
let showAvatar = presentedModally
if #available(iOS 14.0.0, *) {
avatarData = showAvatar ? .swiftUI(AvatarInput(mxContentUri: room.summary.avatar,
itemId: room.roomId,
displayName: room.summary.displayname
)) : nil
avatarData = showAvatar ? .swiftUI(AvatarInput(
mxContentUri: room.summary.avatar,
itemId: room.roomId,
displayName: room.summary.displayname
)) : nil
} else {
avatarData = showAvatar ? .uiKit(RoomAvatarViewData(
roomId: room.roomId,

View file

@ -36,7 +36,7 @@ final class RoomNotificationSettingsViewModel: RoomNotificationSettingsViewModel
@available(iOS 14.0, *)
@Published var viewState: RoomNotificationSettingsViewState!
@available(iOS 14.0, *)
lazy var bag = Set<AnyCancellable>()
lazy var cancelables = Set<AnyCancellable>()
// MARK: Public
@ -72,13 +72,13 @@ final class RoomNotificationSettingsViewModel: RoomNotificationSettingsViewModel
let avatarData = avatarData,
case let AvatarInputOption.swiftUI(data) = avatarData {
avatarService.avatarImage(inputData: data)
.sink{ image in
.sink { image in
var newState = self.state
newState.avatar = image
newState.displayName = data.displayName
self.state = newState
}
.store(in: &bag)
.store(in: &cancelables)
}
}

View file

@ -17,7 +17,6 @@
*/
import Foundation
import SwiftUI
protocol RoomNotificationSettingsViewModelViewDelegate: AnyObject {
func roomNotificationSettingsViewModel(_ viewModel: RoomNotificationSettingsViewModelType, didUpdateViewState viewState: RoomNotificationSettingsViewStateType)

View file

@ -29,7 +29,6 @@ struct FormSectionHeaderView: View {
.padding(.leading)
.padding(.bottom, 8)
.font(Font(theme.fonts.footnote))
.autocapitalization(.allCharacters)
.textCase(.uppercase)
}
}

View file

@ -27,7 +27,7 @@ struct RoomNotificationSettingsView: View {
@ViewBuilder
private var leftButton: some View {
if presentedModally {
SwiftUI.Button(VectorL10n.cancel) {
Button(VectorL10n.cancel) {
viewModel.process(viewAction: .cancel)
}
}