From 97e89e75ba1f6fc2aa3e37e07d1a363baec10190 Mon Sep 17 00:00:00 2001 From: Doug <6060466+pixlwave@users.noreply.github.com> Date: Mon, 24 Apr 2023 15:03:46 +0100 Subject: [PATCH] Update template screen naming. (#824) Update the script too. --- .../UITests/UITestsAppCoordinator.swift | 4 ++-- ....swift => TemplateScreenCoordinator.swift} | 20 +++++++++---------- ...odels.swift => TemplateScreenModels.swift} | 12 +++++------ ...el.swift => TemplateScreenViewModel.swift} | 14 ++++++------- ... => TemplateScreenViewModelProtocol.swift} | 6 +++--- .../ElementX/View/TemplateScreen.swift | 8 ++++---- ...ift => TemplateScreenViewModelTests.swift} | 6 +++--- Tools/Scripts/createScreen.sh | 12 +++++++---- 8 files changed, 43 insertions(+), 39 deletions(-) rename Tools/Scripts/Templates/SimpleScreenExample/ElementX/{TemplateCoordinator.swift => TemplateScreenCoordinator.swift} (70%) rename Tools/Scripts/Templates/SimpleScreenExample/ElementX/{TemplateModels.swift => TemplateScreenModels.swift} (84%) rename Tools/Scripts/Templates/SimpleScreenExample/ElementX/{TemplateViewModel.swift => TemplateScreenViewModel.swift} (62%) rename Tools/Scripts/Templates/SimpleScreenExample/ElementX/{TemplateViewModelProtocol.swift => TemplateScreenViewModelProtocol.swift} (77%) rename Tools/Scripts/Templates/SimpleScreenExample/Tests/Unit/{TemplateViewModelTests.swift => TemplateScreenViewModelTests.swift} (86%) diff --git a/ElementX/Sources/UITests/UITestsAppCoordinator.swift b/ElementX/Sources/UITests/UITestsAppCoordinator.swift index e673032c6..b725bc62c 100644 --- a/ElementX/Sources/UITests/UITestsAppCoordinator.swift +++ b/ElementX/Sources/UITests/UITestsAppCoordinator.swift @@ -100,9 +100,9 @@ class MockScreen: Identifiable { credentials: credentials, keyBackupNeeded: false)) case .simpleRegular: - return TemplateCoordinator(parameters: .init(promptType: .regular)) + return TemplateScreenCoordinator(parameters: .init(promptType: .regular)) case .simpleUpgrade: - return TemplateCoordinator(parameters: .init(promptType: .upgrade)) + return TemplateScreenCoordinator(parameters: .init(promptType: .upgrade)) case .home: let navigationStackCoordinator = NavigationStackCoordinator() let session = MockUserSession(clientProxy: MockClientProxy(userID: "@mock:matrix.org"), diff --git a/Tools/Scripts/Templates/SimpleScreenExample/ElementX/TemplateCoordinator.swift b/Tools/Scripts/Templates/SimpleScreenExample/ElementX/TemplateScreenCoordinator.swift similarity index 70% rename from Tools/Scripts/Templates/SimpleScreenExample/ElementX/TemplateCoordinator.swift rename to Tools/Scripts/Templates/SimpleScreenExample/ElementX/TemplateScreenCoordinator.swift index 737079a68..c2663c615 100644 --- a/Tools/Scripts/Templates/SimpleScreenExample/ElementX/TemplateCoordinator.swift +++ b/Tools/Scripts/Templates/SimpleScreenExample/ElementX/TemplateScreenCoordinator.swift @@ -17,31 +17,31 @@ import Combine import SwiftUI -struct TemplateCoordinatorParameters { - let promptType: TemplatePromptType +struct TemplateScreenCoordinatorParameters { + let promptType: TemplateScreenPromptType } -enum TemplateCoordinatorAction { +enum TemplateScreenCoordinatorAction { case accept case cancel // Consider adding CustomStringConvertible conformance if the actions contain PII } -final class TemplateCoordinator: CoordinatorProtocol { - private let parameters: TemplateCoordinatorParameters - private var viewModel: TemplateViewModelProtocol - private let actionsSubject: PassthroughSubject = .init() +final class TemplateScreenCoordinator: CoordinatorProtocol { + private let parameters: TemplateScreenCoordinatorParameters + private var viewModel: TemplateScreenViewModelProtocol + private let actionsSubject: PassthroughSubject = .init() private var cancellables: Set = .init() - var actions: AnyPublisher { + var actions: AnyPublisher { actionsSubject.eraseToAnyPublisher() } - init(parameters: TemplateCoordinatorParameters) { + init(parameters: TemplateScreenCoordinatorParameters) { self.parameters = parameters - viewModel = TemplateViewModel(promptType: parameters.promptType) + viewModel = TemplateScreenViewModel(promptType: parameters.promptType) } func start() { diff --git a/Tools/Scripts/Templates/SimpleScreenExample/ElementX/TemplateModels.swift b/Tools/Scripts/Templates/SimpleScreenExample/ElementX/TemplateScreenModels.swift similarity index 84% rename from Tools/Scripts/Templates/SimpleScreenExample/ElementX/TemplateModels.swift rename to Tools/Scripts/Templates/SimpleScreenExample/ElementX/TemplateScreenModels.swift index ac95e5cb9..92a2ab9d8 100644 --- a/Tools/Scripts/Templates/SimpleScreenExample/ElementX/TemplateModels.swift +++ b/Tools/Scripts/Templates/SimpleScreenExample/ElementX/TemplateScreenModels.swift @@ -16,12 +16,12 @@ import Foundation -enum TemplatePromptType { +enum TemplateScreenPromptType { case regular case upgrade } -extension TemplatePromptType: Identifiable, CaseIterable { +extension TemplateScreenPromptType: Identifiable, CaseIterable { var id: Self { self } var title: String { @@ -43,19 +43,19 @@ extension TemplatePromptType: Identifiable, CaseIterable { } } -enum TemplateViewModelAction { +enum TemplateScreenViewModelAction { case accept case cancel // Consider adding CustomStringConvertible conformance if the actions contain PII } -struct TemplateViewState: BindableState { - var promptType: TemplatePromptType +struct TemplateScreenViewState: BindableState { + var promptType: TemplateScreenPromptType var count: Int } -enum TemplateViewAction { +enum TemplateScreenViewAction { case incrementCount case decrementCount case accept diff --git a/Tools/Scripts/Templates/SimpleScreenExample/ElementX/TemplateViewModel.swift b/Tools/Scripts/Templates/SimpleScreenExample/ElementX/TemplateScreenViewModel.swift similarity index 62% rename from Tools/Scripts/Templates/SimpleScreenExample/ElementX/TemplateViewModel.swift rename to Tools/Scripts/Templates/SimpleScreenExample/ElementX/TemplateScreenViewModel.swift index c8e9f822d..4319c7563 100644 --- a/Tools/Scripts/Templates/SimpleScreenExample/ElementX/TemplateViewModel.swift +++ b/Tools/Scripts/Templates/SimpleScreenExample/ElementX/TemplateScreenViewModel.swift @@ -17,22 +17,22 @@ import Combine import SwiftUI -typealias TemplateViewModelType = StateStoreViewModel +typealias TemplateScreenViewModelType = StateStoreViewModel -class TemplateViewModel: TemplateViewModelType, TemplateViewModelProtocol { - private var actionsSubject: PassthroughSubject = .init() +class TemplateScreenViewModel: TemplateScreenViewModelType, TemplateScreenViewModelProtocol { + private var actionsSubject: PassthroughSubject = .init() - var actions: AnyPublisher { + var actions: AnyPublisher { actionsSubject.eraseToAnyPublisher() } - init(promptType: TemplatePromptType, initialCount: Int = 0) { - super.init(initialViewState: TemplateViewState(promptType: promptType, count: 0)) + init(promptType: TemplateScreenPromptType, initialCount: Int = 0) { + super.init(initialViewState: TemplateScreenViewState(promptType: promptType, count: 0)) } // MARK: - Public - override func process(viewAction: TemplateViewAction) { + override func process(viewAction: TemplateScreenViewAction) { switch viewAction { case .accept: actionsSubject.send(.accept) diff --git a/Tools/Scripts/Templates/SimpleScreenExample/ElementX/TemplateViewModelProtocol.swift b/Tools/Scripts/Templates/SimpleScreenExample/ElementX/TemplateScreenViewModelProtocol.swift similarity index 77% rename from Tools/Scripts/Templates/SimpleScreenExample/ElementX/TemplateViewModelProtocol.swift rename to Tools/Scripts/Templates/SimpleScreenExample/ElementX/TemplateScreenViewModelProtocol.swift index 47c5fd323..4bb8ee708 100644 --- a/Tools/Scripts/Templates/SimpleScreenExample/ElementX/TemplateViewModelProtocol.swift +++ b/Tools/Scripts/Templates/SimpleScreenExample/ElementX/TemplateScreenViewModelProtocol.swift @@ -17,7 +17,7 @@ import Combine @MainActor -protocol TemplateViewModelProtocol { - var actions: AnyPublisher { get } - var context: TemplateViewModelType.Context { get } +protocol TemplateScreenViewModelProtocol { + var actions: AnyPublisher { get } + var context: TemplateScreenViewModelType.Context { get } } diff --git a/Tools/Scripts/Templates/SimpleScreenExample/ElementX/View/TemplateScreen.swift b/Tools/Scripts/Templates/SimpleScreenExample/ElementX/View/TemplateScreen.swift index b05795a5f..487c9bf34 100644 --- a/Tools/Scripts/Templates/SimpleScreenExample/ElementX/View/TemplateScreen.swift +++ b/Tools/Scripts/Templates/SimpleScreenExample/ElementX/View/TemplateScreen.swift @@ -23,7 +23,7 @@ struct TemplateScreen: View { colorScheme == .light ? .element.secondaryContent : .element.tertiaryContent } - @ObservedObject var context: TemplateViewModel.Context + @ObservedObject var context: TemplateScreenViewModel.Context var body: some View { ScrollView { @@ -92,9 +92,9 @@ struct TemplateScreen: View { // MARK: - Previews -struct Template_Previews: PreviewProvider { - static let regularViewModel = TemplateViewModel(promptType: .regular) - static let upgradeViewModel = TemplateViewModel(promptType: .upgrade) +struct TemplateScreen_Previews: PreviewProvider { + static let regularViewModel = TemplateScreenViewModel(promptType: .regular) + static let upgradeViewModel = TemplateScreenViewModel(promptType: .upgrade) static var previews: some View { TemplateScreen(context: regularViewModel.context) .previewDisplayName("Regular") diff --git a/Tools/Scripts/Templates/SimpleScreenExample/Tests/Unit/TemplateViewModelTests.swift b/Tools/Scripts/Templates/SimpleScreenExample/Tests/Unit/TemplateScreenViewModelTests.swift similarity index 86% rename from Tools/Scripts/Templates/SimpleScreenExample/Tests/Unit/TemplateViewModelTests.swift rename to Tools/Scripts/Templates/SimpleScreenExample/Tests/Unit/TemplateScreenViewModelTests.swift index 9c07c02fc..a1f3c0c29 100644 --- a/Tools/Scripts/Templates/SimpleScreenExample/Tests/Unit/TemplateViewModelTests.swift +++ b/Tools/Scripts/Templates/SimpleScreenExample/Tests/Unit/TemplateScreenViewModelTests.swift @@ -24,14 +24,14 @@ class TemplateScreenViewModelTests: XCTestCase { static let counterInitialValue = 0 } - var viewModel: TemplateViewModelProtocol! + var viewModel: TemplateScreenViewModelProtocol! - var context: TemplateViewModelType.Context { + var context: TemplateScreenViewModelType.Context { viewModel.context } override func setUpWithError() throws { - viewModel = TemplateViewModel(promptType: .regular, initialCount: Constants.counterInitialValue) + viewModel = TemplateScreenViewModel(promptType: .regular, initialCount: Constants.counterInitialValue) } func testInitialState() { diff --git a/Tools/Scripts/createScreen.sh b/Tools/Scripts/createScreen.sh index a9ddc1e07..aee20f4e8 100755 --- a/Tools/Scripts/createScreen.sh +++ b/Tools/Scripts/createScreen.sh @@ -1,11 +1,15 @@ #!/bin/bash -if [ ! $# -eq 2 ]; then - echo "Usage: ./createScreen.sh Folder MyScreenName" +GREEN='\033[0;32m' +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 fi -SCREENS_DIR="../../ElementX/Sources/Screens"/$1 +SCREENS_DIR="../../ElementX/Sources/Screens"/$1Screen UI_TESTS_DIR="../../UITests/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/ -SCREEN_NAME=$2 +SCREEN_NAME=$1 SCREEN_VAR_NAME=`echo $SCREEN_NAME | awk '{ print tolower(substr($0, 1, 1)) substr($0, 2) }'` function rename_files {