diff --git a/NativeAppTemplate/App.swift b/NativeAppTemplate/App.swift index e8af4d5..5728066 100644 --- a/NativeAppTemplate/App.swift +++ b/NativeAppTemplate/App.swift @@ -36,7 +36,6 @@ private final class NullSessionController: SessionControllerProtocol { var shouldUpdateApp: Bool = false var shouldUpdatePrivacy: Bool = false var shouldUpdateTerms: Bool = false - var maximumNameLength: Int = 100 var shopLimitCount: Int = 0 var shopkeeper: Shopkeeper? var hasPermissions: Bool { diff --git a/NativeAppTemplate/Constants.swift b/NativeAppTemplate/Constants.swift index e0b9470..a4c130a 100644 --- a/NativeAppTemplate/Constants.swift +++ b/NativeAppTemplate/Constants.swift @@ -74,6 +74,7 @@ enum NativeAppTemplateConstants { // MARK: - ItemTag + static let maximumItemTagNameLength = 100 static let maximumItemTagDescriptionLength = 1_000 // MARK: - Corner Radius diff --git a/NativeAppTemplate/Networking/Requests/PermissionsRequest.swift b/NativeAppTemplate/Networking/Requests/PermissionsRequest.swift index 008e7a8..256e91a 100644 --- a/NativeAppTemplate/Networking/Requests/PermissionsRequest.swift +++ b/NativeAppTemplate/Networking/Requests/PermissionsRequest.swift @@ -9,7 +9,6 @@ struct PermissionsResponse: Sendable { var iosAppVersion: Int var shouldUpdatePrivacy: Bool var shouldUpdateTerms: Bool - var maximumNameLength: Int var shopLimitCount: Int } @@ -49,8 +48,6 @@ struct PermissionsRequest: Request { throw NativeAppTemplateAPIError.responseMissingRequiredMeta(field: "should_update_terms") } - let maximumNameLength = doc.meta["maximum_name_length"] as? Int ?? 100 - guard let shopLimitCount = doc.meta["shop_limit_count"] as? Int else { throw NativeAppTemplateAPIError.responseMissingRequiredMeta(field: "shop_limit_count") } @@ -59,7 +56,6 @@ struct PermissionsRequest: Request { iosAppVersion: iosAppVersion, shouldUpdatePrivacy: shouldUpdatePrivacy, shouldUpdateTerms: shouldUpdateTerms, - maximumNameLength: maximumNameLength, shopLimitCount: shopLimitCount ) } diff --git a/NativeAppTemplate/Sessions/SessionController.swift b/NativeAppTemplate/Sessions/SessionController.swift index 83f656d..34c94d1 100644 --- a/NativeAppTemplate/Sessions/SessionController.swift +++ b/NativeAppTemplate/Sessions/SessionController.swift @@ -18,7 +18,6 @@ import Observation var shouldUpdateApp = false var shouldUpdatePrivacy = false var shouldUpdateTerms = false - var maximumNameLength = 100 var shopLimitCount = 0 var shopkeeper: Shopkeeper? { @@ -171,8 +170,6 @@ import Observation shouldUpdateApp = Int(Bundle.main.appBuild)! < permissionsResponse.iosAppVersion shouldUpdatePrivacy = permissionsResponse.shouldUpdatePrivacy shouldUpdateTerms = permissionsResponse.shouldUpdateTerms - maximumNameLength = permissionsResponse.maximumNameLength - shopLimitCount = permissionsResponse.shopLimitCount didFetchPermissions = true diff --git a/NativeAppTemplate/Sessions/SessionControllerProtocol.swift b/NativeAppTemplate/Sessions/SessionControllerProtocol.swift index ac651ed..7233c63 100644 --- a/NativeAppTemplate/Sessions/SessionControllerProtocol.swift +++ b/NativeAppTemplate/Sessions/SessionControllerProtocol.swift @@ -38,7 +38,6 @@ protocol SessionControllerProtocol: AnyObject, Observable, Sendable { var shouldUpdateApp: Bool { get set } var shouldUpdatePrivacy: Bool { get set } var shouldUpdateTerms: Bool { get set } - var maximumNameLength: Int { get set } var shopLimitCount: Int { get set } var shopkeeper: Shopkeeper? { get set } diff --git a/NativeAppTemplate/UI/Shop Settings/ItemTag Detail/ItemTagDetailView.swift b/NativeAppTemplate/UI/Shop Settings/ItemTag Detail/ItemTagDetailView.swift index 3afac11..1335035 100644 --- a/NativeAppTemplate/UI/Shop Settings/ItemTag Detail/ItemTagDetailView.swift +++ b/NativeAppTemplate/UI/Shop Settings/ItemTag Detail/ItemTagDetailView.swift @@ -61,7 +61,6 @@ private extension ItemTagDetailView { viewModel: ItemTagEditViewModel( itemTagRepository: dataManager.itemTagRepository, messageBus: messageBus, - sessionController: dataManager.sessionController, itemTagId: viewModel.itemTagId ) ) diff --git a/NativeAppTemplate/UI/Shop Settings/ItemTag Detail/ItemTagEditViewModel.swift b/NativeAppTemplate/UI/Shop Settings/ItemTag Detail/ItemTagEditViewModel.swift index 0dc55b8..808a88f 100644 --- a/NativeAppTemplate/UI/Shop Settings/ItemTag Detail/ItemTagEditViewModel.swift +++ b/NativeAppTemplate/UI/Shop Settings/ItemTag Detail/ItemTagEditViewModel.swift @@ -18,18 +18,15 @@ final class ItemTagEditViewModel { private let itemTagRepository: ItemTagRepositoryProtocol private let messageBus: MessageBus - private let sessionController: SessionControllerProtocol private let itemTagId: String init( itemTagRepository: ItemTagRepositoryProtocol, messageBus: MessageBus, - sessionController: SessionControllerProtocol, itemTagId: String ) { self.itemTagRepository = itemTagRepository self.messageBus = messageBus - self.sessionController = sessionController self.itemTagId = itemTagId } @@ -70,7 +67,7 @@ final class ItemTagEditViewModel { } var maximumNameLength: Int { - sessionController.maximumNameLength + NativeAppTemplateConstants.maximumItemTagNameLength } var maximumDescriptionLength: Int { diff --git a/NativeAppTemplate/UI/Shop Settings/ItemTag List/ItemTagCreateViewModel.swift b/NativeAppTemplate/UI/Shop Settings/ItemTag List/ItemTagCreateViewModel.swift index c9561a7..db4498f 100644 --- a/NativeAppTemplate/UI/Shop Settings/ItemTag List/ItemTagCreateViewModel.swift +++ b/NativeAppTemplate/UI/Shop Settings/ItemTag List/ItemTagCreateViewModel.swift @@ -16,18 +16,15 @@ final class ItemTagCreateViewModel { private let itemTagRepository: ItemTagRepositoryProtocol private let messageBus: MessageBus - private let sessionController: SessionControllerProtocol private let shopId: String init( itemTagRepository: ItemTagRepositoryProtocol, messageBus: MessageBus, - sessionController: SessionControllerProtocol, shopId: String ) { self.itemTagRepository = itemTagRepository self.messageBus = messageBus - self.sessionController = sessionController self.shopId = shopId } @@ -54,7 +51,7 @@ final class ItemTagCreateViewModel { } var maximumNameLength: Int { - sessionController.maximumNameLength + NativeAppTemplateConstants.maximumItemTagNameLength } var maximumDescriptionLength: Int { diff --git a/NativeAppTemplate/UI/Shop Settings/ItemTag List/ItemTagListView.swift b/NativeAppTemplate/UI/Shop Settings/ItemTag List/ItemTagListView.swift index 5e883e2..8c07340 100644 --- a/NativeAppTemplate/UI/Shop Settings/ItemTag List/ItemTagListView.swift +++ b/NativeAppTemplate/UI/Shop Settings/ItemTag List/ItemTagListView.swift @@ -111,7 +111,6 @@ private extension ItemTagListView { viewModel: ItemTagCreateViewModel( itemTagRepository: dataManager.itemTagRepository, messageBus: messageBus, - sessionController: dataManager.sessionController, shopId: viewModel.shop.id ) ) diff --git a/NativeAppTemplateTests/Testing/Repositories/TestSessionController.swift b/NativeAppTemplateTests/Testing/Repositories/TestSessionController.swift index 80b9ba5..9a98161 100644 --- a/NativeAppTemplateTests/Testing/Repositories/TestSessionController.swift +++ b/NativeAppTemplateTests/Testing/Repositories/TestSessionController.swift @@ -21,7 +21,6 @@ import Foundation public var shouldUpdateTerms: Bool = false public var shouldThrowPrivacyError: Bool = false public var shouldThrowTermsError: Bool = false - public var maximumNameLength: Int = 100 public var shopLimitCount: Int = 1 public var shopkeeper: Shopkeeper? diff --git a/NativeAppTemplateTests/UI/Shop Settings/ItemTag Detail/ItemTagEditViewModelTest.swift b/NativeAppTemplateTests/UI/Shop Settings/ItemTag Detail/ItemTagEditViewModelTest.swift index 94b275a..5164635 100644 --- a/NativeAppTemplateTests/UI/Shop Settings/ItemTag Detail/ItemTagEditViewModelTest.swift +++ b/NativeAppTemplateTests/UI/Shop Settings/ItemTag Detail/ItemTagEditViewModelTest.swift @@ -10,7 +10,6 @@ import Testing @MainActor @Suite struct ItemTagEditViewModelTest { - let sessionController = TestSessionController() let itemTagRepository = TestItemTagRepository( itemTagsService: ItemTagsService() ) @@ -36,7 +35,6 @@ struct ItemTagEditViewModelTest { let viewModel = ItemTagEditViewModel( itemTagRepository: itemTagRepository, messageBus: messageBus, - sessionController: sessionController, itemTagId: itemTagId ) @@ -50,16 +48,14 @@ struct ItemTagEditViewModelTest { @Test func maximumNameLength() { - sessionController.maximumNameLength = 6 let viewModel = ItemTagEditViewModel( itemTagRepository: itemTagRepository, messageBus: messageBus, - sessionController: sessionController, itemTagId: itemTagId ) - #expect(viewModel.maximumNameLength == 6) + #expect(viewModel.maximumNameLength == 100) } @Test @@ -67,7 +63,6 @@ struct ItemTagEditViewModelTest { let viewModel = ItemTagEditViewModel( itemTagRepository: itemTagRepository, messageBus: messageBus, - sessionController: sessionController, itemTagId: itemTagId ) @@ -79,7 +74,6 @@ struct ItemTagEditViewModelTest { let viewModel = ItemTagEditViewModel( itemTagRepository: itemTagRepository, messageBus: messageBus, - sessionController: sessionController, itemTagId: itemTagId ) @@ -101,7 +95,6 @@ struct ItemTagEditViewModelTest { let viewModel = ItemTagEditViewModel( itemTagRepository: itemTagRepository, messageBus: messageBus, - sessionController: sessionController, itemTagId: itemTagId ) @@ -126,7 +119,6 @@ struct ItemTagEditViewModelTest { let viewModel = ItemTagEditViewModel( itemTagRepository: itemTagRepository, messageBus: messageBus, - sessionController: sessionController, itemTagId: itemTagId ) @@ -151,13 +143,11 @@ struct ItemTagEditViewModelTest { (String(repeating: "x", count: 101), true) // 101 → invalid ]) func nameValidation(name: String, shouldBeInvalid: Bool) async { - sessionController.maximumNameLength = 100 itemTagRepository.setItemTags(itemTags: [testItemTag]) let viewModel = ItemTagEditViewModel( itemTagRepository: itemTagRepository, messageBus: messageBus, - sessionController: sessionController, itemTagId: itemTagId ) @@ -183,7 +173,6 @@ struct ItemTagEditViewModelTest { let viewModel = ItemTagEditViewModel( itemTagRepository: itemTagRepository, messageBus: messageBus, - sessionController: sessionController, itemTagId: itemTagId ) @@ -204,7 +193,6 @@ struct ItemTagEditViewModelTest { let viewModel = ItemTagEditViewModel( itemTagRepository: itemTagRepository, messageBus: messageBus, - sessionController: sessionController, itemTagId: itemTagId ) @@ -238,19 +226,17 @@ struct ItemTagEditViewModelTest { @Test func validateNameLengthTruncatesCorrectly() { - sessionController.maximumNameLength = 3 let viewModel = ItemTagEditViewModel( itemTagRepository: itemTagRepository, messageBus: messageBus, - sessionController: sessionController, itemTagId: itemTagId ) - viewModel.name = "ABCDEFGH" + viewModel.name = String(repeating: "A", count: 100) + "EXTRA" viewModel.validateNameLength() - #expect(viewModel.name == "ABC") + #expect(viewModel.name == String(repeating: "A", count: 100)) } @Test @@ -258,7 +244,6 @@ struct ItemTagEditViewModelTest { let viewModel = ItemTagEditViewModel( itemTagRepository: itemTagRepository, messageBus: messageBus, - sessionController: sessionController, itemTagId: itemTagId ) @@ -275,7 +260,6 @@ struct ItemTagEditViewModelTest { let viewModel = ItemTagEditViewModel( itemTagRepository: itemTagRepository, messageBus: messageBus, - sessionController: sessionController, itemTagId: itemTagId ) @@ -310,7 +294,6 @@ struct ItemTagEditViewModelTest { let viewModel = ItemTagEditViewModel( itemTagRepository: itemTagRepository, messageBus: messageBus, - sessionController: sessionController, itemTagId: itemTagId ) @@ -344,7 +327,6 @@ struct ItemTagEditViewModelTest { let viewModel = ItemTagEditViewModel( itemTagRepository: itemTagRepository, messageBus: messageBus, - sessionController: sessionController, itemTagId: itemTagId ) diff --git a/NativeAppTemplateTests/UI/Shop Settings/ItemTag List/ItemTagCreateViewModelTest.swift b/NativeAppTemplateTests/UI/Shop Settings/ItemTag List/ItemTagCreateViewModelTest.swift index 8dbc996..89c4807 100644 --- a/NativeAppTemplateTests/UI/Shop Settings/ItemTag List/ItemTagCreateViewModelTest.swift +++ b/NativeAppTemplateTests/UI/Shop Settings/ItemTag List/ItemTagCreateViewModelTest.swift @@ -10,7 +10,6 @@ import Testing @MainActor @Suite struct ItemTagCreateViewModelTest { - let sessionController = TestSessionController() let itemTagRepository = TestItemTagRepository( itemTagsService: ItemTagsService() ) @@ -22,7 +21,6 @@ struct ItemTagCreateViewModelTest { let viewModel = ItemTagCreateViewModel( itemTagRepository: itemTagRepository, messageBus: messageBus, - sessionController: sessionController, shopId: shopId ) @@ -35,16 +33,14 @@ struct ItemTagCreateViewModelTest { @Test func maximumNameLength() { - sessionController.maximumNameLength = 5 let viewModel = ItemTagCreateViewModel( itemTagRepository: itemTagRepository, messageBus: messageBus, - sessionController: sessionController, shopId: shopId ) - #expect(viewModel.maximumNameLength == 5) + #expect(viewModel.maximumNameLength == 100) } @Test @@ -52,7 +48,6 @@ struct ItemTagCreateViewModelTest { let viewModel = ItemTagCreateViewModel( itemTagRepository: itemTagRepository, messageBus: messageBus, - sessionController: sessionController, shopId: shopId ) @@ -69,12 +64,10 @@ struct ItemTagCreateViewModelTest { (String(repeating: "a", count: 101), true) // 101 → invalid ]) func nameValidation(name: String, shouldBeInvalid: Bool) { - sessionController.maximumNameLength = 100 let viewModel = ItemTagCreateViewModel( itemTagRepository: itemTagRepository, messageBus: messageBus, - sessionController: sessionController, shopId: shopId ) @@ -93,7 +86,6 @@ struct ItemTagCreateViewModelTest { let viewModel = ItemTagCreateViewModel( itemTagRepository: itemTagRepository, messageBus: messageBus, - sessionController: sessionController, shopId: shopId ) @@ -104,19 +96,17 @@ struct ItemTagCreateViewModelTest { @Test func validateNameLengthTruncatesCorrectly() { - sessionController.maximumNameLength = 4 let viewModel = ItemTagCreateViewModel( itemTagRepository: itemTagRepository, messageBus: messageBus, - sessionController: sessionController, shopId: shopId ) - viewModel.name = "abcdefgh" + viewModel.name = String(repeating: "a", count: 100) + "EXTRA" viewModel.validateNameLength() - #expect(viewModel.name == "abcd") + #expect(viewModel.name == String(repeating: "a", count: 100)) } @Test @@ -124,7 +114,6 @@ struct ItemTagCreateViewModelTest { let viewModel = ItemTagCreateViewModel( itemTagRepository: itemTagRepository, messageBus: messageBus, - sessionController: sessionController, shopId: shopId ) @@ -139,7 +128,6 @@ struct ItemTagCreateViewModelTest { let viewModel = ItemTagCreateViewModel( itemTagRepository: itemTagRepository, messageBus: messageBus, - sessionController: sessionController, shopId: shopId ) @@ -169,7 +157,6 @@ struct ItemTagCreateViewModelTest { let viewModel = ItemTagCreateViewModel( itemTagRepository: itemTagRepository, messageBus: messageBus, - sessionController: sessionController, shopId: shopId ) @@ -192,7 +179,6 @@ struct ItemTagCreateViewModelTest { let viewModel = ItemTagCreateViewModel( itemTagRepository: itemTagRepository, messageBus: messageBus, - sessionController: sessionController, shopId: shopId )