Update template screen naming. (#824)

Update the script too.
This commit is contained in:
Doug
2023-04-24 15:03:46 +01:00
committed by GitHub
parent e81d515f7d
commit 50f674a111
8 changed files with 43 additions and 39 deletions
@@ -100,9 +100,9 @@ class MockScreen: Identifiable {
credentials: credentials, credentials: credentials,
keyBackupNeeded: false)) keyBackupNeeded: false))
case .simpleRegular: case .simpleRegular:
return TemplateCoordinator(parameters: .init(promptType: .regular)) return TemplateScreenCoordinator(parameters: .init(promptType: .regular))
case .simpleUpgrade: case .simpleUpgrade:
return TemplateCoordinator(parameters: .init(promptType: .upgrade)) return TemplateScreenCoordinator(parameters: .init(promptType: .upgrade))
case .home: case .home:
let navigationStackCoordinator = NavigationStackCoordinator() let navigationStackCoordinator = NavigationStackCoordinator()
let session = MockUserSession(clientProxy: MockClientProxy(userID: "@mock:matrix.org"), let session = MockUserSession(clientProxy: MockClientProxy(userID: "@mock:matrix.org"),
@@ -17,31 +17,31 @@
import Combine import Combine
import SwiftUI import SwiftUI
struct TemplateCoordinatorParameters { struct TemplateScreenCoordinatorParameters {
let promptType: TemplatePromptType let promptType: TemplateScreenPromptType
} }
enum TemplateCoordinatorAction { enum TemplateScreenCoordinatorAction {
case accept case accept
case cancel case cancel
// Consider adding CustomStringConvertible conformance if the actions contain PII // Consider adding CustomStringConvertible conformance if the actions contain PII
} }
final class TemplateCoordinator: CoordinatorProtocol { final class TemplateScreenCoordinator: CoordinatorProtocol {
private let parameters: TemplateCoordinatorParameters private let parameters: TemplateScreenCoordinatorParameters
private var viewModel: TemplateViewModelProtocol private var viewModel: TemplateScreenViewModelProtocol
private let actionsSubject: PassthroughSubject<TemplateCoordinatorAction, Never> = .init() private let actionsSubject: PassthroughSubject<TemplateScreenCoordinatorAction, Never> = .init()
private var cancellables: Set<AnyCancellable> = .init() private var cancellables: Set<AnyCancellable> = .init()
var actions: AnyPublisher<TemplateCoordinatorAction, Never> { var actions: AnyPublisher<TemplateScreenCoordinatorAction, Never> {
actionsSubject.eraseToAnyPublisher() actionsSubject.eraseToAnyPublisher()
} }
init(parameters: TemplateCoordinatorParameters) { init(parameters: TemplateScreenCoordinatorParameters) {
self.parameters = parameters self.parameters = parameters
viewModel = TemplateViewModel(promptType: parameters.promptType) viewModel = TemplateScreenViewModel(promptType: parameters.promptType)
} }
func start() { func start() {
@@ -16,12 +16,12 @@
import Foundation import Foundation
enum TemplatePromptType { enum TemplateScreenPromptType {
case regular case regular
case upgrade case upgrade
} }
extension TemplatePromptType: Identifiable, CaseIterable { extension TemplateScreenPromptType: Identifiable, CaseIterable {
var id: Self { self } var id: Self { self }
var title: String { var title: String {
@@ -43,19 +43,19 @@ extension TemplatePromptType: Identifiable, CaseIterable {
} }
} }
enum TemplateViewModelAction { enum TemplateScreenViewModelAction {
case accept case accept
case cancel case cancel
// Consider adding CustomStringConvertible conformance if the actions contain PII // Consider adding CustomStringConvertible conformance if the actions contain PII
} }
struct TemplateViewState: BindableState { struct TemplateScreenViewState: BindableState {
var promptType: TemplatePromptType var promptType: TemplateScreenPromptType
var count: Int var count: Int
} }
enum TemplateViewAction { enum TemplateScreenViewAction {
case incrementCount case incrementCount
case decrementCount case decrementCount
case accept case accept
@@ -17,22 +17,22 @@
import Combine import Combine
import SwiftUI import SwiftUI
typealias TemplateViewModelType = StateStoreViewModel<TemplateViewState, TemplateViewAction> typealias TemplateScreenViewModelType = StateStoreViewModel<TemplateScreenViewState, TemplateScreenViewAction>
class TemplateViewModel: TemplateViewModelType, TemplateViewModelProtocol { class TemplateScreenViewModel: TemplateScreenViewModelType, TemplateScreenViewModelProtocol {
private var actionsSubject: PassthroughSubject<TemplateViewModelAction, Never> = .init() private var actionsSubject: PassthroughSubject<TemplateScreenViewModelAction, Never> = .init()
var actions: AnyPublisher<TemplateViewModelAction, Never> { var actions: AnyPublisher<TemplateScreenViewModelAction, Never> {
actionsSubject.eraseToAnyPublisher() actionsSubject.eraseToAnyPublisher()
} }
init(promptType: TemplatePromptType, initialCount: Int = 0) { init(promptType: TemplateScreenPromptType, initialCount: Int = 0) {
super.init(initialViewState: TemplateViewState(promptType: promptType, count: 0)) super.init(initialViewState: TemplateScreenViewState(promptType: promptType, count: 0))
} }
// MARK: - Public // MARK: - Public
override func process(viewAction: TemplateViewAction) { override func process(viewAction: TemplateScreenViewAction) {
switch viewAction { switch viewAction {
case .accept: case .accept:
actionsSubject.send(.accept) actionsSubject.send(.accept)
@@ -17,7 +17,7 @@
import Combine import Combine
@MainActor @MainActor
protocol TemplateViewModelProtocol { protocol TemplateScreenViewModelProtocol {
var actions: AnyPublisher<TemplateViewModelAction, Never> { get } var actions: AnyPublisher<TemplateScreenViewModelAction, Never> { get }
var context: TemplateViewModelType.Context { get } var context: TemplateScreenViewModelType.Context { get }
} }
@@ -23,7 +23,7 @@ struct TemplateScreen: View {
colorScheme == .light ? .element.secondaryContent : .element.tertiaryContent colorScheme == .light ? .element.secondaryContent : .element.tertiaryContent
} }
@ObservedObject var context: TemplateViewModel.Context @ObservedObject var context: TemplateScreenViewModel.Context
var body: some View { var body: some View {
ScrollView { ScrollView {
@@ -92,9 +92,9 @@ struct TemplateScreen: View {
// MARK: - Previews // MARK: - Previews
struct Template_Previews: PreviewProvider { struct TemplateScreen_Previews: PreviewProvider {
static let regularViewModel = TemplateViewModel(promptType: .regular) static let regularViewModel = TemplateScreenViewModel(promptType: .regular)
static let upgradeViewModel = TemplateViewModel(promptType: .upgrade) static let upgradeViewModel = TemplateScreenViewModel(promptType: .upgrade)
static var previews: some View { static var previews: some View {
TemplateScreen(context: regularViewModel.context) TemplateScreen(context: regularViewModel.context)
.previewDisplayName("Regular") .previewDisplayName("Regular")
@@ -24,14 +24,14 @@ class TemplateScreenViewModelTests: XCTestCase {
static let counterInitialValue = 0 static let counterInitialValue = 0
} }
var viewModel: TemplateViewModelProtocol! var viewModel: TemplateScreenViewModelProtocol!
var context: TemplateViewModelType.Context { var context: TemplateScreenViewModelType.Context {
viewModel.context viewModel.context
} }
override func setUpWithError() throws { override func setUpWithError() throws {
viewModel = TemplateViewModel(promptType: .regular, initialCount: Constants.counterInitialValue) viewModel = TemplateScreenViewModel(promptType: .regular, initialCount: Constants.counterInitialValue)
} }
func testInitialState() { func testInitialState() {
+8 -4
View File
@@ -1,11 +1,15 @@
#!/bin/bash #!/bin/bash
if [ ! $# -eq 2 ]; then GREEN='\033[0;32m'
echo "Usage: ./createScreen.sh Folder MyScreenName" NOCOLOR='\033[0m'
if [ ! $# -eq 1 ]; then
echo -e "Usage: ${GREEN}./createScreen.sh Name${NOCOLOR}"
echo -e "For example ${GREEN}./createScreen.sh Home${NOCOLOR} will create ${GREEN}HomeScreen${NOCOLOR}"
exit 1 exit 1
fi fi
SCREENS_DIR="../../ElementX/Sources/Screens"/$1 SCREENS_DIR="../../ElementX/Sources/Screens"/$1Screen
UI_TESTS_DIR="../../UITests/Sources" UI_TESTS_DIR="../../UITests/Sources"
UNIT_TESTS_DIR="../../UnitTests/Sources" UNIT_TESTS_DIR="../../UnitTests/Sources"
@@ -28,7 +32,7 @@ cp -R "Templates/SimpleScreenExample/Tests/UI/" $UI_TESTS_DIR/
cp -R "Templates/SimpleScreenExample/Tests/Unit/" $UNIT_TESTS_DIR/ cp -R "Templates/SimpleScreenExample/Tests/Unit/" $UNIT_TESTS_DIR/
SCREEN_NAME=$2 SCREEN_NAME=$1
SCREEN_VAR_NAME=`echo $SCREEN_NAME | awk '{ print tolower(substr($0, 1, 1)) substr($0, 2) }'` SCREEN_VAR_NAME=`echo $SCREEN_NAME | awk '{ print tolower(substr($0, 1, 1)) substr($0, 2) }'`
function rename_files { function rename_files {